]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
efi: Define set_dfu_alt_info() for boards with UEFI capsule update enabled
authorSughosh Ganu <sughosh.ganu@linaro.org>
Fri, 15 Apr 2022 05:59:37 +0000 (11:29 +0530)
committerHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Fri, 15 Apr 2022 08:43:18 +0000 (10:43 +0200)
Currently, there are a bunch of boards which enable the UEFI capsule
update feature. The actual update of the firmware images is done
through the dfu framework which uses the dfu_alt_info environment
variable for getting information on the update, like device, partition
number/address etc. The dfu framework allows the variable to be set
through the set_dfu_alt_info function defined by the platform, or if
the function is not defined, it gets the variable from the
environment. Using the value set in the environment is not very
robust, since the variable can be modified from the u-boot command
line and this can cause an incorrect update.

To prevent this from happening, define the set_dfu_alt_info function
when the capsule update feature is enabled. A weak function is defined
which sets the dfu_alt_info environment variable by getting the string
for the variable from the platform.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Masami Hiramatsu <masami.hiramatsu@linaro.org>
lib/efi_loader/Kconfig
lib/efi_loader/efi_firmware.c

index 559b95a599b981040180638c07ab3f01147b6722..d50cd2563d3df18005e8c1359257095b0fb20be1 100644 (file)
@@ -181,6 +181,7 @@ config EFI_CAPSULE_FIRMWARE_FIT
        depends on EFI_CAPSULE_FIRMWARE_MANAGEMENT
        select UPDATE_FIT
        select DFU
+       select SET_DFU_ALT_INFO
        select EFI_CAPSULE_FIRMWARE
        help
          Select this option if you want to enable firmware management protocol
@@ -192,6 +193,7 @@ config EFI_CAPSULE_FIRMWARE_RAW
        depends on SANDBOX || (!SANDBOX && !EFI_CAPSULE_FIRMWARE_FIT)
        select DFU_WRITE_ALT
        select DFU
+       select SET_DFU_ALT_INFO
        select EFI_CAPSULE_FIRMWARE
        help
          Select this option if you want to enable firmware management protocol
index 56bd113de1a4cbbf206f7a013809b0461436561a..36a62b02b3805cdb25c260dc9117f9c44ecf8c58 100644 (file)
@@ -35,6 +35,11 @@ struct fmp_payload_header {
        u32 lowest_supported_version;
 };
 
+__weak void set_dfu_alt_info(char *interface, char *devstr)
+{
+       env_set("dfu_alt_info", update_info.dfu_string);
+}
+
 /* Place holder; not supported */
 static
 efi_status_t EFIAPI efi_firmware_get_image_unsupported(