Re: [PATCH v3 1/3] efi/loongarch: Randomize kernel preferred address for KASLR
"Ard Biesheuvel" <[email protected]> Wed, 29 Apr 2026 11:15:16 +0200
| Newsgroups | org.kernel.vger.linux-efi,dev.linux.lists.loongarch,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Wed, 29 Apr 2026, at 11:04, WANG Rui wrote: > Hi Ard, > > On Wed, Apr 29, 2026 at 4:55 PM Ard Biesheuvel <[email protected]> wrote: >> >> >> >> On Wed, 29 Apr 2026, at 07:13, WANG Rui wrote: >> > Introduce efi_get_kimg_kaslr_address() to compute the preferred >> > kernel image address dynamically when CONFIG_RANDOMIZE_BASE is >> > enabled. The function derives a random offset using EFI-provided >> > randomness combined with the timer value, and constrains it within >> > CONFIG_RANDOMIZE_BASE_MAX_OFFSET. >> > >> > Update EFI_KIMG_PREFERRED_ADDRESS to call this helper so that the >> > EFI stub can select a randomized load address when KASLR is active, >> > while preserving the original base address behavior when KASLR is >> > disabled or nokaslr is specified. >> > >> > Signed-off-by: WANG Rui <[email protected]> >> > --- >> > arch/loongarch/include/asm/efi.h | 4 +++- >> > drivers/firmware/efi/libstub/loongarch.c | 16 ++++++++++++++++ >> > 2 files changed, 19 insertions(+), 1 deletion(-) >> > >> > diff --git a/arch/loongarch/include/asm/efi.h b/arch/loongarch/include/asm/efi.h >> > index eddc8e79b3fa..f831320efd41 100644 >> > --- a/arch/loongarch/include/asm/efi.h >> > +++ b/arch/loongarch/include/asm/efi.h >> > @@ -30,6 +30,8 @@ static inline unsigned long efi_get_kimg_min_align(void) >> > return SZ_2M; >> > } >> > >> > -#define EFI_KIMG_PREFERRED_ADDRESS PHYSADDR(VMLINUX_LOAD_ADDRESS) >> > +unsigned long efi_get_kimg_kaslr_address(void); >> > + >> >> Where is the call to this function being added? >> >> > +#define EFI_KIMG_PREFERRED_ADDRESS efi_get_kimg_kaslr_address() > > 1. drivers/firmware/efi/libstub/loongarch-stub.c > > efi_status_t handle_kernel_image(...) > { > ... > status = efi_relocate_kernel(&kernel_addr, kernel_fsize, kernel_asize, > EFI_KIMG_PREFERRED_ADDRESS, efi_get_kimg_min_align(), 0x0); > ... > } > > 2. drivers/firmware/efi/libstub/zboot.c > > static unsigned long alloc_preferred_address(...) > { > #ifdef EFI_KIMG_PREFERRED_ADDRESS > efi_physical_addr_t efi_addr = EFI_KIMG_PREFERRED_ADDRESS; > > if (efi_bs_call(allocate_pages, EFI_ALLOCATE_ADDRESS, EFI_LOADER_DATA, > alloc_size / EFI_PAGE_SIZE, &efi_addr) == EFI_SUCCESS) > return efi_addr; > #endif > return ULONG_MAX; > } > Ah apologies - I misread the patch.