From d4d3ef8b347b73aa60f60f4be06acf1643e79f34 Mon Sep 17 00:00:00 2001 From: Jinyang He Date: Fri, 5 Feb 2021 18:11:21 +0800 Subject: MIPS: relocatable: Provide kaslr_offset() to get the kernel offset Provide kaslr_offset() to get the kernel offset when KASLR is enabled. Error may occur before update_kaslr_offset(), so put it at the end of the offset branch. Fixes: a307a4ce9ecd ("MIPS: Loongson64: Add KASLR support") Reported-by: kernel test robot Signed-off-by: Jinyang He Signed-off-by: Thomas Bogendoerfer --- arch/mips/kernel/relocate.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'arch/mips/kernel/relocate.c') diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c index c643c816cbe0..95abb9c82f00 100644 --- a/arch/mips/kernel/relocate.c +++ b/arch/mips/kernel/relocate.c @@ -300,6 +300,13 @@ static inline int __init relocation_addr_valid(void *loc_new) return 1; } +static inline void __init update_kaslr_offset(unsigned long *addr, long offset) +{ + unsigned long *new_addr = (unsigned long *)RELOCATED(addr); + + *new_addr = (unsigned long)offset; +} + #if defined(CONFIG_USE_OF) void __weak *plat_get_fdt(void) { @@ -410,6 +417,9 @@ void *__init relocate_kernel(void) /* Return the new kernel's entry point */ kernel_entry = RELOCATED(start_kernel); + + /* Error may occur before, so keep it at last */ + update_kaslr_offset(&__kaslr_offset, offset); } out: return kernel_entry; -- cgit