Commit 416a9f84 authored by Ard Biesheuvel's avatar Ard Biesheuvel

efi: libstub: pass image handle to handle_kernel_image()

In a future patch, arm64's implementation of handle_kernel_image() will
omit randomizing the placement of the kernel if the load address was
chosen randomly by the loader. In order to do this, it needs to locate a
protocol on the image handle, so pass it to handle_kernel_image().
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent 24b72bb1
...@@ -117,7 +117,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, ...@@ -117,7 +117,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
unsigned long *image_size, unsigned long *image_size,
unsigned long *reserve_addr, unsigned long *reserve_addr,
unsigned long *reserve_size, unsigned long *reserve_size,
efi_loaded_image_t *image) efi_loaded_image_t *image,
efi_handle_t image_handle)
{ {
const int slack = TEXT_OFFSET - 5 * PAGE_SIZE; const int slack = TEXT_OFFSET - 5 * PAGE_SIZE;
int alloc_size = MAX_UNCOMP_KERNEL_SIZE + EFI_PHYS_ALIGN; int alloc_size = MAX_UNCOMP_KERNEL_SIZE + EFI_PHYS_ALIGN;
......
...@@ -83,7 +83,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, ...@@ -83,7 +83,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
unsigned long *image_size, unsigned long *image_size,
unsigned long *reserve_addr, unsigned long *reserve_addr,
unsigned long *reserve_size, unsigned long *reserve_size,
efi_loaded_image_t *image) efi_loaded_image_t *image,
efi_handle_t image_handle)
{ {
efi_status_t status; efi_status_t status;
unsigned long kernel_size, kernel_memsize = 0; unsigned long kernel_size, kernel_memsize = 0;
......
...@@ -198,7 +198,7 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle, ...@@ -198,7 +198,7 @@ efi_status_t __efiapi efi_pe_entry(efi_handle_t handle,
status = handle_kernel_image(&image_addr, &image_size, status = handle_kernel_image(&image_addr, &image_size,
&reserve_addr, &reserve_addr,
&reserve_size, &reserve_size,
image); image, handle);
if (status != EFI_SUCCESS) { if (status != EFI_SUCCESS) {
efi_err("Failed to relocate kernel\n"); efi_err("Failed to relocate kernel\n");
goto fail_free_screeninfo; goto fail_free_screeninfo;
......
...@@ -939,7 +939,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, ...@@ -939,7 +939,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
unsigned long *image_size, unsigned long *image_size,
unsigned long *reserve_addr, unsigned long *reserve_addr,
unsigned long *reserve_size, unsigned long *reserve_size,
efi_loaded_image_t *image); efi_loaded_image_t *image,
efi_handle_t image_handle);
asmlinkage void __noreturn efi_enter_kernel(unsigned long entrypoint, asmlinkage void __noreturn efi_enter_kernel(unsigned long entrypoint,
unsigned long fdt_addr, unsigned long fdt_addr,
......
...@@ -80,7 +80,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr, ...@@ -80,7 +80,8 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
unsigned long *image_size, unsigned long *image_size,
unsigned long *reserve_addr, unsigned long *reserve_addr,
unsigned long *reserve_size, unsigned long *reserve_size,
efi_loaded_image_t *image) efi_loaded_image_t *image,
efi_handle_t image_handle)
{ {
unsigned long kernel_size = 0; unsigned long kernel_size = 0;
unsigned long preferred_addr; unsigned long preferred_addr;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment