Blame SOURCES/0009-MokManager-Stop-using-EFI_VARIABLE_APPEND_WRITE.patch

d84fc6
From 85c837d67fef9cd831a3126398ed8da1421f61c5 Mon Sep 17 00:00:00 2001
d84fc6
From: Gary Lin <glin@suse.com>
d84fc6
Date: Fri, 11 May 2018 16:59:03 +0800
d84fc6
Subject: [PATCH 09/62] MokManager: Stop using EFI_VARIABLE_APPEND_WRITE
d84fc6
d84fc6
When writing MokList with EFI_VARIABLE_APPEND_WRITE, some HP laptops
d84fc6
may just return EFI_SUCCESS without writing the content into the flash,
d84fc6
so we have no way to detect if MokList is updated or not. Now we always
d84fc6
read MokList first and write it back with the new content.
d84fc6
d84fc6
https://github.com/rhboot/shim/issues/105
d84fc6
d84fc6
Signed-off-by: Gary Lin <glin@suse.com>
d84fc6
Upstream-commit-id: f442c8424b4
d84fc6
---
d84fc6
 MokManager.c | 11 +++--------
d84fc6
 1 file changed, 3 insertions(+), 8 deletions(-)
d84fc6
d84fc6
diff --git a/MokManager.c b/MokManager.c
d84fc6
index 0767e4a6cde..df9b6fe6912 100644
d84fc6
--- a/MokManager.c
d84fc6
+++ b/MokManager.c
d84fc6
@@ -880,14 +880,9 @@ static EFI_STATUS write_db(CHAR16 * db_name, void *MokNew, UINTN MokNewSize)
d84fc6
 	UINTN old_size;
d84fc6
 	UINTN new_size;
d84fc6
 
d84fc6
-	efi_status = gRT->SetVariable(db_name, &SHIM_LOCK_GUID,
d84fc6
-				      EFI_VARIABLE_NON_VOLATILE |
d84fc6
-				      EFI_VARIABLE_BOOTSERVICE_ACCESS |
d84fc6
-				      EFI_VARIABLE_APPEND_WRITE,
d84fc6
-				      MokNewSize, MokNew);
d84fc6
-	if (!EFI_ERROR(efi_status) || efi_status != EFI_INVALID_PARAMETER) {
d84fc6
-		return efi_status;
d84fc6
-	}
d84fc6
+	/* Do not use EFI_VARIABLE_APPEND_WRITE due to faulty firmwares.
d84fc6
+	 * ref: https://github.com/rhboot/shim/issues/55
d84fc6
+	 *      https://github.com/rhboot/shim/issues/105 */
d84fc6
 
d84fc6
 	efi_status = get_variable_attr(db_name, (UINT8 **)&old_data, &old_size,
d84fc6
 				       SHIM_LOCK_GUID, &attributes);
d84fc6
-- 
d84fc6
2.26.2
d84fc6