Skip to content

Commit

Permalink
arm64/efistub: Clean up KASLR logic
Browse files Browse the repository at this point in the history
Clean up some redundant code in the KASLR placement handling logic. No
functional change intended.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
  • Loading branch information
Ard Biesheuvel committed Jul 10, 2024
1 parent ebf5a79 commit 12a01f6
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 20 deletions.
13 changes: 3 additions & 10 deletions drivers/firmware/efi/libstub/arm64-stub.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
efi_loaded_image_t *image,
efi_handle_t image_handle)
{
efi_status_t status;
unsigned long kernel_size, kernel_codesize, kernel_memsize;

if (image->image_base != _text) {
Expand All @@ -39,15 +38,9 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
*reserve_size = kernel_memsize;
*image_addr = (unsigned long)_text;

status = efi_kaslr_relocate_kernel(image_addr,
reserve_addr, reserve_size,
kernel_size, kernel_codesize,
kernel_memsize,
efi_kaslr_get_phys_seed(image_handle));
if (status != EFI_SUCCESS)
return status;

return EFI_SUCCESS;
return efi_kaslr_relocate_kernel(image_addr, reserve_addr, reserve_size,
kernel_size, kernel_codesize, kernel_memsize,
efi_kaslr_get_phys_seed(image_handle));
}

asmlinkage void primary_entry(void);
Expand Down
20 changes: 10 additions & 10 deletions drivers/firmware/efi/libstub/kaslr.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@
*/
u32 efi_kaslr_get_phys_seed(efi_handle_t image_handle)
{
efi_status_t status;
u32 phys_seed;
efi_guid_t li_fixed_proto = LINUX_EFI_LOADED_IMAGE_FIXED_GUID;
void *p;

Expand All @@ -32,18 +30,20 @@ u32 efi_kaslr_get_phys_seed(efi_handle_t image_handle)
&li_fixed_proto, &p) == EFI_SUCCESS) {
efi_info("Image placement fixed by loader\n");
} else {
efi_status_t status;
u32 phys_seed;

status = efi_get_random_bytes(sizeof(phys_seed),
(u8 *)&phys_seed);
if (status == EFI_SUCCESS) {
if (status == EFI_SUCCESS)
return phys_seed;
} else if (status == EFI_NOT_FOUND) {

if (status == EFI_NOT_FOUND)
efi_info("EFI_RNG_PROTOCOL unavailable\n");
efi_nokaslr = true;
} else if (status != EFI_SUCCESS) {
efi_err("efi_get_random_bytes() failed (0x%lx)\n",
status);
efi_nokaslr = true;
}
else
efi_err("efi_get_random_bytes() failed (0x%lx)\n", status);

efi_nokaslr = true;
}

return 0;
Expand Down

0 comments on commit 12a01f6

Please sign in to comment.