From 2dba8190a3e18837d37b316e82890b60993b18e5 Mon Sep 17 00:00:00 2001
From: Javier Martinez Canillas <javierm@redhat.com>
Date: Tue, 14 Jan 2020 17:41:29 +0100
Subject: [PATCH 193/220] blscfg: Always use the root variable to search for
 BLS snippets

The boot and root variables are set by grub2-mkconfig to tell GRUB what
are the devices and partitions used as the EFI System Partition (ESP)
and to store the /boot directory (or used as the /boot mount point).

But the boot variable is not needed anymore, this was added because the
blscfg module used to search for the BLS snippets in the ESP, but was
later changed to always search for the BLS files in /boot even for EFI.

When doing that change, the logic was made backwards and so the boot
variable is wrongly used for legacy BIOS. This only works because this
is set to the same value as the root variable.

So the correct thing to do is to always use the root variable to search
the BLS snippets, since that is set to the partition that stores them.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
---
 grub-core/commands/blscfg.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
index 069db72..24e35a4 100644
--- a/grub-core/commands/blscfg.c
+++ b/grub-core/commands/blscfg.c
@@ -1018,14 +1018,12 @@ bls_load_entries (const char *path)
   if (!devid) {
 #ifdef GRUB_MACHINE_EMU
     devid = "host";
-#elif defined(GRUB_MACHINE_EFI)
-    devid = grub_env_get ("root");
 #else
-    devid = grub_env_get ("boot");
+    devid = grub_env_get ("root");
 #endif
     if (!devid)
       return grub_error (GRUB_ERR_FILE_NOT_FOUND,
-			 N_("variable `%s' isn't set"), "boot");
+			 N_("variable `%s' isn't set"), "root");
   }
 
   grub_dprintf ("blscfg", "opening %s\n", devid);
-- 
1.8.3.1

