@@ -28,9 +28,9 @@
volatile unsigned long octeon_processor_boot = 0xff;
volatile unsigned long octeon_processor_sp;
volatile unsigned long octeon_processor_gp;
-#ifdef CONFIG_RELOCATABLE
+#ifdef CONFIG_RANDOMIZE_BASE
volatile unsigned long octeon_processor_relocated_kernel_entry;
-#endif /* CONFIG_RELOCATABLE */
+#endif /* CONFIG_RANDOMIZE_BASE */
#ifdef CONFIG_HOTPLUG_CPU
uint64_t octeon_bootloader_entry_addr;
@@ -190,7 +190,7 @@ static void __init octeon_smp_setup(void)
}
-#ifdef CONFIG_RELOCATABLE
+#ifdef CONFIG_RANDOMIZE_BASE
int plat_post_relocation(long offset)
{
unsigned long entry = (unsigned long)kernel_entry;
@@ -200,7 +200,7 @@ int plat_post_relocation(long offset)
return 0;
}
-#endif /* CONFIG_RELOCATABLE */
+#endif /* CONFIG_RANDOMIZE_BASE */
/**
* Firmware CPU startup hook
@@ -82,7 +82,7 @@ void __init *plat_get_fdt(void)
return (void *)fdt;
}
-#ifdef CONFIG_RELOCATABLE
+#ifdef CONFIG_RANDOMIZE_BASE
void __init plat_fdt_relocated(void *new_location)
{
@@ -97,7 +97,7 @@ void __init plat_fdt_relocated(void *new_location)
fw_arg1 = (unsigned long)new_location;
}
-#endif /* CONFIG_RELOCATABLE */
+#endif /* CONFIG_RANDOMIZE_BASE */
void __init plat_mem_setup(void)
{
@@ -169,7 +169,7 @@ static inline void plat_swiotlb_setup(void) {}
*/
extern void *plat_get_fdt(void);
-#ifdef CONFIG_RELOCATABLE
+#ifdef CONFIG_RANDOMIZE_BASE
/**
* plat_fdt_relocated() - Update platform's information about relocated dtb
@@ -180,7 +180,7 @@ extern void *plat_get_fdt(void);
*/
void plat_fdt_relocated(void *new_location);
-#endif /* CONFIG_RELOCATABLE */
+#endif /* CONFIG_RANDOMIZE_BASE */
#endif /* CONFIG_USE_OF */
#endif /* _ASM_BOOTINFO_H */
@@ -100,7 +100,7 @@
#
octeon_spin_wait_boot:
-#ifdef CONFIG_RELOCATABLE
+#ifdef CONFIG_RANDOMIZE_BASE
PTR_LA t0, octeon_processor_relocated_kernel_entry
LONG_L t0, (t0)
beq zero, t0, 1f
@@ -109,7 +109,7 @@
jr t0
nop
1:
-#endif /* CONFIG_RELOCATABLE */
+#endif /* CONFIG_RANDOMIZE_BASE */
# This is the variable where the next core to boot is stored
PTR_LA t0, octeon_processor_boot
@@ -92,7 +92,7 @@ obj-$(CONFIG_I8253) += i8253.o
obj-$(CONFIG_GPIO_TXX9) += gpio_txx9.o
-obj-$(CONFIG_RELOCATABLE) += relocate.o
+obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o
obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o crash.o
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
@@ -118,7 +118,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
set_saved_sp sp, t0, t1
PTR_SUBU sp, 4 * SZREG # init stack pointer
-#ifdef CONFIG_RELOCATABLE
+#ifdef CONFIG_RANDOMIZE_BASE
/* Copy kernel and apply the relocations */
jal relocate_kernel
@@ -136,9 +136,9 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
* newly sync'd icache.
*/
jr.hb v0
-#else /* !CONFIG_RELOCATABLE */
+#else /* !CONFIG_RANDOMIZE_BASE */
j start_kernel
-#endif /* !CONFIG_RELOCATABLE */
+#endif /* !CONFIG_RANDOMIZE_BASE */
END(kernel_entry)
#ifdef CONFIG_SMP
similarity index 97%
rename from arch/mips/kernel/relocate.c
rename to arch/mips/kernel/kaslr.c
@@ -188,8 +188,6 @@ static int __init relocate_exception_table(long offset)
return 0;
}
-#ifdef CONFIG_RANDOMIZE_BASE
-
static inline __init unsigned long rotate_xor(unsigned long hash,
const void *area, size_t size)
{
@@ -280,19 +278,6 @@ static inline void __init *determine_relocation_address(void)
return RELOCATED(dest);
}
-#else
-
-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;
-}
-
-#endif
-
static inline int __init relocation_addr_valid(void *loc_new)
{
if ((unsigned long)loc_new & 0x0000ffff) {
Currently, the difference between using CONFIG_RELOCATABLE and CONFIG_RANDOMIZE_BASE is determine_relocation_address(). CONFIG_RANDOMIZE_BASE achieves randomization, but CONFIG_RELOCATABLE relocate the kernel is very limited, currently returns a constant. Therefore, abandoned determine_relocation_address() on CONFIG_RELOCATABLE. Rename relocate.c to kaslr.c and use CONFIG_RANDOMIZE_BASE to configure the kaslr function. Signed-off-by: Jinyang He <hejinyang@loongson.cn> --- arch/mips/cavium-octeon/smp.c | 8 ++++---- arch/mips/generic/init.c | 4 ++-- arch/mips/include/asm/bootinfo.h | 4 ++-- .../include/asm/mach-cavium-octeon/kernel-entry-init.h | 4 ++-- arch/mips/kernel/Makefile | 2 +- arch/mips/kernel/head.S | 6 +++--- arch/mips/kernel/{relocate.c => kaslr.c} | 15 --------------- 7 files changed, 14 insertions(+), 29 deletions(-) rename arch/mips/kernel/{relocate.c => kaslr.c} (97%)