Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64/efistub: Clean up KASLR logic

Clean up some redundant code in the KASLR placement handling logic. No
functional change intended.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>

+13 -20
+3 -10
drivers/firmware/efi/libstub/arm64-stub.c
··· 21 21 efi_loaded_image_t *image, 22 22 efi_handle_t image_handle) 23 23 { 24 - efi_status_t status; 25 24 unsigned long kernel_size, kernel_codesize, kernel_memsize; 26 25 27 26 if (image->image_base != _text) { ··· 38 39 *reserve_size = kernel_memsize; 39 40 *image_addr = (unsigned long)_text; 40 41 41 - status = efi_kaslr_relocate_kernel(image_addr, 42 - reserve_addr, reserve_size, 43 - kernel_size, kernel_codesize, 44 - kernel_memsize, 45 - efi_kaslr_get_phys_seed(image_handle)); 46 - if (status != EFI_SUCCESS) 47 - return status; 48 - 49 - return EFI_SUCCESS; 42 + return efi_kaslr_relocate_kernel(image_addr, reserve_addr, reserve_size, 43 + kernel_size, kernel_codesize, kernel_memsize, 44 + efi_kaslr_get_phys_seed(image_handle)); 50 45 } 51 46 52 47 asmlinkage void primary_entry(void);
+10 -10
drivers/firmware/efi/libstub/kaslr.c
··· 18 18 */ 19 19 u32 efi_kaslr_get_phys_seed(efi_handle_t image_handle) 20 20 { 21 - efi_status_t status; 22 - u32 phys_seed; 23 21 efi_guid_t li_fixed_proto = LINUX_EFI_LOADED_IMAGE_FIXED_GUID; 24 22 void *p; 25 23 ··· 30 32 &li_fixed_proto, &p) == EFI_SUCCESS) { 31 33 efi_info("Image placement fixed by loader\n"); 32 34 } else { 35 + efi_status_t status; 36 + u32 phys_seed; 37 + 33 38 status = efi_get_random_bytes(sizeof(phys_seed), 34 39 (u8 *)&phys_seed); 35 - if (status == EFI_SUCCESS) { 40 + if (status == EFI_SUCCESS) 36 41 return phys_seed; 37 - } else if (status == EFI_NOT_FOUND) { 42 + 43 + if (status == EFI_NOT_FOUND) 38 44 efi_info("EFI_RNG_PROTOCOL unavailable\n"); 39 - efi_nokaslr = true; 40 - } else if (status != EFI_SUCCESS) { 41 - efi_err("efi_get_random_bytes() failed (0x%lx)\n", 42 - status); 43 - efi_nokaslr = true; 44 - } 45 + else 46 + efi_err("efi_get_random_bytes() failed (0x%lx)\n", status); 47 + 48 + efi_nokaslr = true; 45 49 } 46 50 47 51 return 0;