ad58010
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
e8e6235
From: Javier Martinez Canillas <javierm@redhat.com>
e8e6235
Date: Tue, 3 Apr 2018 15:42:47 +0200
902c8e8
Subject: [PATCH] Only attempt to scan different BLS directories on EFI
e8e6235
 machines
e8e6235
e8e6235
Current BLS support attempted to scan for BLS directories, but this only
e8e6235
makes sense on EFI, where BLS fragments are in /loader/$vendor/entries.
e8e6235
e8e6235
For BIOS, only either the default /loader/entries path should be scanned
e8e6235
or the BLS directory defined in the blsdir GRUB 2 environment variable.
e8e6235
e8e6235
Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
e8e6235
---
e8e6235
 grub-core/commands/blscfg.c | 9 ++++-----
e8e6235
 1 file changed, 4 insertions(+), 5 deletions(-)
e8e6235
e8e6235
diff --git a/grub-core/commands/blscfg.c b/grub-core/commands/blscfg.c
5a73eab
index e0b65534af4..e775c6b8794 100644
e8e6235
--- a/grub-core/commands/blscfg.c
e8e6235
+++ b/grub-core/commands/blscfg.c
e8e6235
@@ -676,8 +676,8 @@ static int find_entry (const char *filename,
e8e6235
   const char *devid = grub_env_get ("boot");
e8e6235
 
e8e6235
   grub_dprintf("blscfg", "%s got here\n", __func__);
e8e6235
-  if (!grub_strcmp (filename, ".") ||
e8e6235
-      !grub_strcmp (filename, ".."))
e8e6235
+  if (filename && (!grub_strcmp (filename, ".") ||
e8e6235
+		   !grub_strcmp (filename, "..")))
e8e6235
     return 0;
e8e6235
 
e8e6235
   if (info->platform == PLATFORM_EFI && !grub_strcasecmp (filename, "boot"))
e8e6235
@@ -872,11 +872,10 @@ grub_cmd_blscfg (grub_extcmd_context_t ctxt UNUSED,
e8e6235
   info.platform = PLATFORM_EMU;
e8e6235
   grub_dprintf ("blscfg", "scanning %s%s\n", GRUB_BOOT_DEVICE,
e8e6235
 		GRUB_BLS_CONFIG_PATH);
e8e6235
-  r = fs->dir (dev, "/boot/loader/",
e8e6235
-	       find_entry, &info;;
e8e6235
+  find_entry(NULL, NULL, &info;;
e8e6235
 #else
e8e6235
   grub_dprintf ("blscfg", "scanning %s\n", GRUB_BLS_CONFIG_PATH);
e8e6235
-  r = fs->dir (dev, "/", find_entry, &info;;
e8e6235
+  find_entry(NULL, NULL, &info;;
e8e6235
 #endif
e8e6235
 
e8e6235
 finish: