summaryrefslogtreecommitdiff
path: root/user/grub/0007-efi_gop-shadow.patch
blob: 7709641cdadc976eb2d078d3c8cac10f9ca94f80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
From 34a3adff822a6d136430e631d0a93448b27fac4e Mon Sep 17 00:00:00 2001
From: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Date: Mon, 28 Aug 2023 23:50:09 +0200
Subject: video/efi_gop: Require shadow if PixelBltOnly

If the EFI graphics pixel format is PixelBltOnly, we cannot write directly
to the frame buffer. We need the shadow frame buffer which we copy via
the BitBlt operation to the hardware.

If the pixel format is PixelBltOnly and allocation of the shadow frame
buffer fails, we must raise an error to signal that the EFI GOP protocol
is not usable.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
---
 grub-core/video/efi_gop.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/grub-core/video/efi_gop.c b/grub-core/video/efi_gop.c
index 7247aee..9452f5e 100644
--- a/grub-core/video/efi_gop.c
+++ b/grub-core/video/efi_gop.c
@@ -480,6 +480,10 @@ grub_video_gop_setup (unsigned int width, unsigned int height,
   if (!buffer)
     {
       grub_dprintf ("video", "GOP: couldn't allocate shadow\n");
+
+      if (info->pixel_format == GRUB_EFI_GOT_BLT_ONLY)
+        return grub_error (GRUB_ERR_OUT_OF_MEMORY, N_("out of memory"));
+
       grub_errno = 0;
       grub_video_gop_fill_mode_info (gop->mode->mode, info,
 				     &framebuffer.mode_info);
-- 
cgit v1.1