Commit 12a01f66 authored by Ard Biesheuvel's avatar Ard Biesheuvel
Browse files

arm64/efistub: Clean up KASLR logic



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

Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent ebf5a79a
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -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,
	return 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;
}

asmlinkage void primary_entry(void);
+10 −10
Original line number Diff line number Diff line
@@ -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");
		else
			efi_err("efi_get_random_bytes() failed (0x%lx)\n", status);

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

	return 0;