|
|
b35c50 |
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
b35c50 |
From: Hans de Goede <hdegoede@redhat.com>
|
|
|
b35c50 |
Date: Fri, 28 Jan 2022 12:43:48 +0100
|
|
|
b35c50 |
Subject: [PATCH] EFI: console: Do not set colorstate until the first text
|
|
|
b35c50 |
output
|
|
|
b35c50 |
|
|
|
b35c50 |
GRUB_MOD_INIT(normal) does an unconditional:
|
|
|
b35c50 |
|
|
|
b35c50 |
grub_env_set ("color_normal", "light-gray/black");
|
|
|
b35c50 |
|
|
|
b35c50 |
which triggers a grub_term_setcolorstate() call. The original version
|
|
|
b35c50 |
of the "efi/console: Do not set text-mode until we actually need it" patch:
|
|
|
b35c50 |
https://lists.gnu.org/archive/html/grub-devel/2018-03/msg00125.html
|
|
|
b35c50 |
|
|
|
b35c50 |
Protected against this by caching the requested state in
|
|
|
b35c50 |
grub_console_setcolorstate () and then only applying it when the first
|
|
|
b35c50 |
text output actually happens. During refactoring to move the
|
|
|
b35c50 |
grub_console_setcolorstate () up higher in the grub-core/term/efi/console.c
|
|
|
b35c50 |
file the code to cache the color-state + bail early was accidentally
|
|
|
b35c50 |
dropped.
|
|
|
b35c50 |
|
|
|
b35c50 |
Restore the cache the color-state + bail early behavior from the original.
|
|
|
b35c50 |
|
|
|
b35c50 |
Cc: Javier Martinez Canillas <javierm@redhat.com>
|
|
|
b35c50 |
Fixes: 2d7c3abd871f ("efi/console: Do not set text-mode until we actually need it")
|
|
|
b35c50 |
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
|
b35c50 |
---
|
|
|
b35c50 |
grub-core/term/efi/console.c | 10 ++++++++++
|
|
|
b35c50 |
1 file changed, 10 insertions(+)
|
|
|
b35c50 |
|
|
|
b35c50 |
diff --git a/grub-core/term/efi/console.c b/grub-core/term/efi/console.c
|
|
|
b35c50 |
index 2f1ae85ba7..c44b2ac318 100644
|
|
|
b35c50 |
--- a/grub-core/term/efi/console.c
|
|
|
b35c50 |
+++ b/grub-core/term/efi/console.c
|
|
|
b35c50 |
@@ -82,6 +82,16 @@ grub_console_setcolorstate (struct grub_term_output *term
|
|
|
b35c50 |
{
|
|
|
b35c50 |
grub_efi_simple_text_output_interface_t *o;
|
|
|
b35c50 |
|
|
|
b35c50 |
+ if (grub_efi_is_finished || text_mode != GRUB_TEXT_MODE_AVAILABLE)
|
|
|
b35c50 |
+ {
|
|
|
b35c50 |
+ /*
|
|
|
b35c50 |
+ * Cache colorstate changes before the first text-output, this avoids
|
|
|
b35c50 |
+ * "color_normal" environment writes causing a switch to textmode.
|
|
|
b35c50 |
+ */
|
|
|
b35c50 |
+ text_colorstate = state;
|
|
|
b35c50 |
+ return;
|
|
|
b35c50 |
+ }
|
|
|
b35c50 |
+
|
|
|
b35c50 |
if (grub_efi_is_finished)
|
|
|
b35c50 |
return;
|
|
|
b35c50 |
|