Blame SOURCES/0031-Hook-exit-when-shim_lock-protocol-installed.patch

00e791
From b5e10f70c7a495dc1788e3604803ee633f1e5f76 Mon Sep 17 00:00:00 2001
00e791
From: Stuart Hayes <stuart.w.hayes@gmail.com>
00e791
Date: Fri, 8 Feb 2019 15:48:20 -0500
00e791
Subject: [PATCH 31/62] Hook exit when shim_lock protocol installed
00e791
00e791
A recent commit moved where the shim_lock protocol is loaded and
00e791
unloaded, but did not move where exit was hooked and unhooked.  Exit
00e791
needs to be hooked when the protocol is installed, so that the protocol
00e791
will be uninstalled on exit.  Otherwise, the system can crash if, for
00e791
example, shim loads grub, the user exits grub, shim is run again, which
00e791
installs a second instance of the protocol, and then grub tries to use
00e791
the shim_lock protocol that was installed by the first instance of shim.
00e791
00e791
Signed-off-by: Stuart Hayes <stuart.w.hayes@gmail.com>
00e791
Upstream-commit-id: 06c92591e94
00e791
---
00e791
 shim.c | 5 +++--
00e791
 1 file changed, 3 insertions(+), 2 deletions(-)
00e791
00e791
diff --git a/shim.c b/shim.c
00e791
index f69e69487fc..16911a37b17 100644
00e791
--- a/shim.c
00e791
+++ b/shim.c
00e791
@@ -2474,9 +2474,9 @@ shim_init(void)
00e791
 			loader_is_participating = 0;
00e791
 		}
00e791
 
00e791
-		hook_exit(systab);
00e791
 	}
00e791
 
00e791
+	hook_exit(systab);
00e791
 	return install_shim_protocols();
00e791
 }
00e791
 
00e791
@@ -2494,9 +2494,10 @@ shim_fini(void)
00e791
 		 * Remove our hooks from system services.
00e791
 		 */
00e791
 		unhook_system_services();
00e791
-		unhook_exit();
00e791
 	}
00e791
 
00e791
+	unhook_exit();
00e791
+
00e791
 	/*
00e791
 	 * Free the space allocated for the alternative 2nd stage loader
00e791
 	 */
00e791
-- 
00e791
2.26.2
00e791