efi_loader: do not use local variable for handle

Do not use a local variable for the handle backing the memory device path.
Adjust relate comments.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
lime2-spi
Heinrich Schuchardt 6 years ago committed by Alexander Graf
parent e102038641
commit 8887acc685
  1. 19
      cmd/bootefi.c

@ -325,7 +325,7 @@ static efi_status_t do_bootefi_exec(void *efi,
{ {
struct efi_loaded_image loaded_image_info = {}; struct efi_loaded_image loaded_image_info = {};
struct efi_object loaded_image_info_obj = {}; struct efi_object loaded_image_info_obj = {};
struct efi_object mem_obj = {}; efi_handle_t mem_handle = NULL;
struct efi_device_path *memdp = NULL; struct efi_device_path *memdp = NULL;
efi_status_t ret; efi_status_t ret;
@ -335,16 +335,21 @@ static efi_status_t do_bootefi_exec(void *efi,
/* /*
* Special case for efi payload not loaded from disk, such as * Special case for efi payload not loaded from disk, such as
* 'bootefi hello' or for example payload loaded directly into * 'bootefi hello' or for example payload loaded directly into
* memory via jtag/etc: * memory via jtag, etc:
*/ */
if (!device_path && !image_path) { if (!device_path && !image_path) {
printf("WARNING: using memory device/image path, this may confuse some payloads!\n"); printf("WARNING: using memory device/image path, this may confuse some payloads!\n");
/* actual addresses filled in after efi_load_pe() */ /* actual addresses filled in after efi_load_pe() */
memdp = efi_dp_from_mem(0, 0, 0); memdp = efi_dp_from_mem(0, 0, 0);
device_path = image_path = memdp; device_path = image_path = memdp;
efi_add_handle(&mem_obj); /*
* Grub expects that the device path of the loaded image is
ret = efi_add_protocol(mem_obj.handle, &efi_guid_device_path, * installed on a handle.
*/
ret = efi_create_handle(&mem_handle);
if (ret != EFI_SUCCESS)
goto exit;
ret = efi_add_protocol(mem_handle, &efi_guid_device_path,
device_path); device_path);
if (ret != EFI_SUCCESS) if (ret != EFI_SUCCESS)
goto exit; goto exit;
@ -428,8 +433,8 @@ static efi_status_t do_bootefi_exec(void *efi,
exit: exit:
/* image has returned, loaded-image obj goes *poof*: */ /* image has returned, loaded-image obj goes *poof*: */
list_del(&loaded_image_info_obj.link); list_del(&loaded_image_info_obj.link);
if (mem_obj.handle) if (mem_handle)
list_del(&mem_obj.link); efi_delete_handle(mem_handle);
return ret; return ret;
} }

Loading…
Cancel
Save