efi: don't unload drivers
EFI applications should be unloaded to avoid leaking memory. However, boot or runtime services continue in the background. So they must not be unloaded. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
71f0587f20
commit
aa6f3cc4b4
|
@ -130,12 +130,16 @@ static int efi_execute_image(const char *file)
|
|||
efi_status_t efiret;
|
||||
struct linux_kernel_header *image_header;
|
||||
const char *options;
|
||||
bool is_driver;
|
||||
int ret;
|
||||
|
||||
ret = efi_load_image(file, &loaded_image, &handle);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
is_driver = (loaded_image->image_code_type == EFI_BOOT_SERVICES_CODE) ||
|
||||
(loaded_image->image_code_type == EFI_RUNTIME_SERVICES_CODE);
|
||||
|
||||
image_header = (struct linux_kernel_header *)loaded_image->image_base;
|
||||
if (image_header->boot_flag == 0xAA55 &&
|
||||
image_header->header == 0x53726448) {
|
||||
|
@ -152,7 +156,8 @@ static int efi_execute_image(const char *file)
|
|||
if (EFI_ERROR(efiret))
|
||||
pr_err("failed to StartImage: %s\n", efi_strerror(efiret));
|
||||
|
||||
BS->unload_image(handle);
|
||||
if (!is_driver)
|
||||
BS->unload_image(handle);
|
||||
|
||||
efi_connect_all();
|
||||
efi_register_devices();
|
||||
|
|
Loading…
Reference in New Issue