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

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