[PATCH] efi_loader: capsule: enforce guid check in api and capsule_on_disk

Ilias Apalodimas ilias.apalodimas at linaro.org
Mon Jul 31 15:01:27 CEST 2023


Hi Akashi-san

On Thu, 27 Jul 2023 at 03:38, AKASHI Takahiro
<takahiro.akashi at linaro.org> wrote:
>
> While UPDATE_CAPSULE api is not fully implemented, this interface and
> capsule-on-disk feature should behave in the same way, especially in
> handling an empty capsule for fwu multibank, for future enhancement.
>
> So move the guid check into efi_capsule_update_firmware().
>
> Fixed: commit a6aafce494ab ("efi_loader: use efi_update_capsule_firmware()
>         for capsule on disk")

I think we can skip the fixes tag here, since noone was really using the feature

Other than that
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>

> Reported-by: Michal Simek <michal.simek at amd.com>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi at linaro.org>
> ---
>  lib/efi_loader/efi_capsule.c | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/lib/efi_loader/efi_capsule.c b/lib/efi_loader/efi_capsule.c
> index 7a6f195cbc02..ddf8153e0982 100644
> --- a/lib/efi_loader/efi_capsule.c
> +++ b/lib/efi_loader/efi_capsule.c
> @@ -581,6 +581,13 @@ static efi_status_t efi_capsule_update_firmware(
>                 fw_accept_os = capsule_data->flags & FW_ACCEPT_OS ? 0x1 : 0x0;
>         }
>
> +       if (guidcmp(&capsule_data->capsule_guid,
> +                   &efi_guid_firmware_management_capsule_id)) {
> +               log_err("Unsupported capsule type: %pUs\n",
> +                       &capsule_data->capsule_guid);
> +               return EFI_UNSUPPORTED;
> +       }
> +
>         /* sanity check */
>         if (capsule_data->header_size < sizeof(*capsule) ||
>             capsule_data->header_size >= capsule_data->capsule_image_size)
> @@ -751,15 +758,7 @@ efi_status_t EFIAPI efi_update_capsule(
>
>                 log_debug("Capsule[%d] (guid:%pUs)\n",
>                           i, &capsule->capsule_guid);
> -               if (!guidcmp(&capsule->capsule_guid,
> -                            &efi_guid_firmware_management_capsule_id)) {
> -                       ret  = efi_capsule_update_firmware(capsule);
> -               } else {
> -                       log_err("Unsupported capsule type: %pUs\n",
> -                               &capsule->capsule_guid);
> -                       ret = EFI_UNSUPPORTED;
> -               }
> -
> +               ret  = efi_capsule_update_firmware(capsule);
>                 if (ret != EFI_SUCCESS)
>                         goto out;
>         }
> --
> 2.41.0
>


More information about the U-Boot mailing list