arm64/efistub: Clean up KASLR logic
authorArd Biesheuvel <ardb@kernel.org>
Wed, 10 Jul 2024 10:22:46 +0000 (12:22 +0200)
committerArd Biesheuvel <ardb@kernel.org>
Wed, 10 Jul 2024 10:22:46 +0000 (12:22 +0200)
Clean up some redundant code in the KASLR placement handling logic. No
functional change intended.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
drivers/firmware/efi/libstub/arm64-stub.c
drivers/firmware/efi/libstub/kaslr.c

index 452b7ccd330e0b208fd3fa1be0eda2fa138366c5..2c38693561475c062d72df4ac743ea1d9f9f28e4 100644 (file)
@@ -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) {
@@ -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);
index 1a9808012abd36ee7f58ad0baf818cbae6df1b0b..6318c40bda38a75a78ce7c4e93d3d529d70588e5 100644 (file)
@@ -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;
 
@@ -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;