From 24600fd06801a23151dfc309867278212e775f65 Mon Sep 17 00:00:00 2001 From: Adriano Cordova Date: Tue, 29 Apr 2025 09:27:55 -0400 Subject: efi_loader: bootbin: do not load an initrd if none is provided Do not try to create an initrd device path nor try to register an initrd with the EFI_LOAD_FILE2_PROTOCOL if none is provided. Handle initrd installation in efi_binary_run_dp with efi_install_initrd, imitating what is done for the fdt. Fixes: 36835a9105c ("efi_loader: binary_run: register an initrd") Reported-by: Weizhao Ouyang Signed-off-by: Adriano Cordova Tested-by: Weizhao Ouyang Reviewed-by: Ilias Apalodimas Reviewed-by: Heinrich Schuchardt --- lib/efi_loader/efi_bootbin.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'lib/efi_loader/efi_bootbin.c') diff --git a/lib/efi_loader/efi_bootbin.c b/lib/efi_loader/efi_bootbin.c index d0f7da309ce..6a189c31ffa 100644 --- a/lib/efi_loader/efi_bootbin.c +++ b/lib/efi_loader/efi_bootbin.c @@ -220,7 +220,6 @@ static efi_status_t efi_binary_run_dp(void *image, size_t size, void *fdt, struct efi_device_path *dp_img) { efi_status_t ret; - struct efi_device_path *dp_initrd; /* Initialize EFI drivers */ ret = efi_init_obj_list(); @@ -234,11 +233,7 @@ static efi_status_t efi_binary_run_dp(void *image, size_t size, void *fdt, if (ret != EFI_SUCCESS) return ret; - dp_initrd = efi_dp_from_mem(EFI_LOADER_DATA, (uintptr_t)initrd, initd_sz); - if (!dp_initrd) - return EFI_OUT_OF_RESOURCES; - - ret = efi_initrd_register(dp_initrd); + ret = efi_install_initrd(initrd, initd_sz); if (ret != EFI_SUCCESS) return ret; -- cgit v1.2.3 From 485ab4c6aa683baab7aa779dff6d9aef6188d1fb Mon Sep 17 00:00:00 2001 From: Adriano Cordova Date: Tue, 29 Apr 2025 09:27:56 -0400 Subject: efi_loader: fix typo initd_sz to initrd_sz Signed-off-by: Adriano Cordova Reviewed-by: Ilias Apalodimas Reviewed-by: Heinrich Schuchardt --- lib/efi_loader/efi_bootbin.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/efi_loader/efi_bootbin.c') diff --git a/lib/efi_loader/efi_bootbin.c b/lib/efi_loader/efi_bootbin.c index 6a189c31ffa..94ba7c5589b 100644 --- a/lib/efi_loader/efi_bootbin.c +++ b/lib/efi_loader/efi_bootbin.c @@ -215,7 +215,7 @@ out: * Return: status code */ static efi_status_t efi_binary_run_dp(void *image, size_t size, void *fdt, - void *initrd, size_t initd_sz, + void *initrd, size_t initrd_sz, struct efi_device_path *dp_dev, struct efi_device_path *dp_img) { @@ -233,7 +233,7 @@ static efi_status_t efi_binary_run_dp(void *image, size_t size, void *fdt, if (ret != EFI_SUCCESS) return ret; - ret = efi_install_initrd(initrd, initd_sz); + ret = efi_install_initrd(initrd, initrd_sz); if (ret != EFI_SUCCESS) return ret; -- cgit v1.2.3