Message ID | 20230531174515.41758-3-raymond.mao@linaro.org |
---|---|
State | Superseded |
Delegated to: | Heinrich Schuchardt |
Headers | show |
Series | Boot variables management for removable media | expand |
On Wed, May 31, 2023 at 10:45:15AM -0700, Raymond Mao wrote: > Correct the return code for out-of-memory and no boot option found > > Signed-off-by: Raymond Mao <raymond.mao@linaro.org> > --- > Changes in v7 > - new patch file created > > cmd/bootmenu.c | 2 +- > cmd/eficonfig.c | 2 +- > lib/efi_loader/efi_bootmgr.c | 8 ++++++-- > 3 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c > index 01daddca7b..987b16889f 100644 > --- a/cmd/bootmenu.c > +++ b/cmd/bootmenu.c > @@ -352,7 +352,7 @@ static struct bootmenu_data *bootmenu_create(int delay) > * a architecture-specific default image name such as BOOTAA64.EFI. > */ > efi_ret = efi_bootmgr_update_media_device_boot_option(); > - if (efi_ret != EFI_SUCCESS && efi_ret != EFI_NOT_FOUND) > + if (efi_ret != EFI_SUCCESS) > goto cleanup; > > ret = prepare_uefi_bootorder_entry(menu, &iter, &i); > diff --git a/cmd/eficonfig.c b/cmd/eficonfig.c > index 82a80306f4..e6e8a0a488 100644 > --- a/cmd/eficonfig.c > +++ b/cmd/eficonfig.c > @@ -2314,7 +2314,7 @@ static int do_eficonfig(struct cmd_tbl *cmdtp, int flag, int argc, char *const a > return CMD_RET_FAILURE; > > ret = efi_bootmgr_update_media_device_boot_option(); > - if (ret != EFI_SUCCESS && ret != EFI_NOT_FOUND) > + if (ret != EFI_SUCCESS) > return ret; > > while (1) { > diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c > index 48cd5f0636..95559ad6dd 100644 > --- a/lib/efi_loader/efi_bootmgr.c > +++ b/lib/efi_loader/efi_bootmgr.c > @@ -663,11 +663,13 @@ efi_status_t efi_bootmgr_update_media_device_boot_option(void) > NULL, &count, > (efi_handle_t **)&volume_handles); > if (ret != EFI_SUCCESS) > - return ret; > + goto out; > > opt = calloc(count, sizeof(struct eficonfig_media_boot_option)); > - if (!opt) > + if (!opt) { > + ret = EFI_OUT_OF_RESOURCES; > goto out; > + } > > /* enumerate all devices supporting EFI_SIMPLE_FILE_SYSTEM_PROTOCOL */ > ret = efi_bootmgr_enumerate_boot_option(opt, volume_handles, count); > @@ -720,5 +722,7 @@ out: > free(opt); > efi_free_pool(volume_handles); > > + if (ret == EFI_NOT_FOUND) > + return EFI_SUCCESS; > return ret; > } > -- > 2.25.1 > Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c index 01daddca7b..987b16889f 100644 --- a/cmd/bootmenu.c +++ b/cmd/bootmenu.c @@ -352,7 +352,7 @@ static struct bootmenu_data *bootmenu_create(int delay) * a architecture-specific default image name such as BOOTAA64.EFI. */ efi_ret = efi_bootmgr_update_media_device_boot_option(); - if (efi_ret != EFI_SUCCESS && efi_ret != EFI_NOT_FOUND) + if (efi_ret != EFI_SUCCESS) goto cleanup; ret = prepare_uefi_bootorder_entry(menu, &iter, &i); diff --git a/cmd/eficonfig.c b/cmd/eficonfig.c index 82a80306f4..e6e8a0a488 100644 --- a/cmd/eficonfig.c +++ b/cmd/eficonfig.c @@ -2314,7 +2314,7 @@ static int do_eficonfig(struct cmd_tbl *cmdtp, int flag, int argc, char *const a return CMD_RET_FAILURE; ret = efi_bootmgr_update_media_device_boot_option(); - if (ret != EFI_SUCCESS && ret != EFI_NOT_FOUND) + if (ret != EFI_SUCCESS) return ret; while (1) { diff --git a/lib/efi_loader/efi_bootmgr.c b/lib/efi_loader/efi_bootmgr.c index 48cd5f0636..95559ad6dd 100644 --- a/lib/efi_loader/efi_bootmgr.c +++ b/lib/efi_loader/efi_bootmgr.c @@ -663,11 +663,13 @@ efi_status_t efi_bootmgr_update_media_device_boot_option(void) NULL, &count, (efi_handle_t **)&volume_handles); if (ret != EFI_SUCCESS) - return ret; + goto out; opt = calloc(count, sizeof(struct eficonfig_media_boot_option)); - if (!opt) + if (!opt) { + ret = EFI_OUT_OF_RESOURCES; goto out; + } /* enumerate all devices supporting EFI_SIMPLE_FILE_SYSTEM_PROTOCOL */ ret = efi_bootmgr_enumerate_boot_option(opt, volume_handles, count); @@ -720,5 +722,7 @@ out: free(opt); efi_free_pool(volume_handles); + if (ret == EFI_NOT_FOUND) + return EFI_SUCCESS; return ret; }
Correct the return code for out-of-memory and no boot option found Signed-off-by: Raymond Mao <raymond.mao@linaro.org> --- Changes in v7 - new patch file created cmd/bootmenu.c | 2 +- cmd/eficonfig.c | 2 +- lib/efi_loader/efi_bootmgr.c | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-)