When CONFIG_RANDOMIZE_BASE is not set, determine_relocation_address() always returns a constant. It is not friendly to users if the address cannot be used. Make it can be configured at Kconfig. Signed-off-by: Jinyang He <hejinyang@xxxxxxxxxxx> --- arch/mips/Kconfig | 5 +++++ arch/mips/kernel/relocate.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 1508829..1c95478 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -2803,6 +2803,11 @@ config RELOCATION_TABLE_SIZE If unsure, leave at the default value. +config RELOCATE_DESTINATION + hex "Relocate address when RANDOMIZE_BASE is not set" + depends on RELOCATABLE && !RANDOMIZE_BASE + default "0xffffffff81000000" + config RANDOMIZE_BASE bool "Randomize the address of the kernel image" depends on RELOCATABLE diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c index 709cfa0..b7ea6ff 100644 --- a/arch/mips/kernel/relocate.c +++ b/arch/mips/kernel/relocate.c @@ -276,7 +276,7 @@ static inline void __init *determine_relocation_address(void) * Choose a new address for the kernel * For now we'll hard code the destination */ - return (void *)0xffffffff81000000; + return (void *)CONFIG_RELOCATE_DESTINATION; } #endif -- 2.1.0