mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-07-16 15:57:19 +00:00
arm-bsp/u-boot: corstone1000: fix runtime capsule update flag checks
Platform-specific capsule-update feature in u-boot does not check the capsule-update flags properly (as stated in UEFI specs). This patch fixes the capsule flags checks in u-boot for corstone1000. Signed-off-by: Emekcan Aras <emekcan.aras@arm.com> Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
@@ -47,6 +47,7 @@ SRC_URI:append = " \
|
|||||||
file://0037-corstone1000-enable-authenticated-capsule-config.patch \
|
file://0037-corstone1000-enable-authenticated-capsule-config.patch \
|
||||||
file://0038-corstone1000-introduce-EFI-authenticated-capsule-upd.patch \
|
file://0038-corstone1000-introduce-EFI-authenticated-capsule-upd.patch \
|
||||||
file://0039-enables-ondisk-capsule-update-feature.patch \
|
file://0039-enables-ondisk-capsule-update-feature.patch \
|
||||||
|
file://0040-fix-runtime-capsule-update-flags-checks.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
do_configure:append(){
|
do_configure:append(){
|
||||||
|
|||||||
+56
@@ -0,0 +1,56 @@
|
|||||||
|
From a83aa9e1b8f6e312da82e54614fbca498493c34d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Emekcan Aras <emekcan.aras@arm.com>
|
||||||
|
Date: Thu, 19 Oct 2023 14:56:55 +0100
|
||||||
|
Subject: [PATCH] fix runtime capsule update flags checks for corstone1000
|
||||||
|
|
||||||
|
Fixes capsule update flags checks in capsule update as these checks are missing
|
||||||
|
in the platform-specific capsule-update implementation in corstone1000.
|
||||||
|
|
||||||
|
Signed-off-by: Emekcan Aras <emekcan.aras@arm.com>
|
||||||
|
Upstream-Status: Inappropriate [Redesign of Capsule update interface is required]
|
||||||
|
---
|
||||||
|
lib/efi_loader/efi_capsule.c | 28 ++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c
|
||||||
|
index 307bcfd73c..34507482b7 100644
|
||||||
|
--- a/lib/efi_loader/efi_capsule.c
|
||||||
|
+++ b/lib/efi_loader/efi_capsule.c
|
||||||
|
@@ -854,6 +854,34 @@ efi_status_t __efi_runtime EFIAPI efi_update_capsule(
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* According to UEFI specs when the flag is CAPSULE_FLAGS_PERSIST_ACROSS_RESET,
|
||||||
|
+ ScatterGatherList can't be NULL.*/
|
||||||
|
+ if ((capsule->flags & CAPSULE_FLAGS_PERSIST_ACROSS_RESET) &&
|
||||||
|
+ scatter_gather_list == 0){
|
||||||
|
+ ret = EFI_INVALID_PARAMETER;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /*According to UEFI specs a capsule which has the CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE
|
||||||
|
+ * flag must have CAPSULE_FLAGS_PERSIST_ACROSS_RESET set in its
|
||||||
|
+ * header as well.*/
|
||||||
|
+ if (capsule->flags & CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE){
|
||||||
|
+ if(!(capsule->flags & CAPSULE_FLAGS_PERSIST_ACROSS_RESET)){
|
||||||
|
+ ret = EFI_INVALID_PARAMETER;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* According to UEFI specs, a capsule which has the CAPSULE_FLAGS_INITIATE_RESET
|
||||||
|
+ * Flag must have CAPSULE_FLAGS_PERSIST_ACROSS_RESET set in its
|
||||||
|
+ * header as well.*/
|
||||||
|
+ if (capsule->flags & CAPSULE_FLAGS_INITIATE_RESET){
|
||||||
|
+ if(!(capsule->flags & CAPSULE_FLAGS_PERSIST_ACROSS_RESET)){
|
||||||
|
+ ret = EFI_INVALID_PARAMETER;
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
log_debug("Capsule[%d] (guid:%pUs)\n",
|
||||||
|
i, &capsule->capsule_guid);
|
||||||
|
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
||||||
Reference in New Issue
Block a user