MIPS: KASLR: Print relocation Information on boot
authorMatt Redfearn <matt.redfearn@imgtec.com>
Thu, 31 Mar 2016 09:05:42 +0000 (10:05 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Fri, 13 May 2016 12:02:04 +0000 (14:02 +0200)
When debugging a relocated kernel, the addresses of the relocated
symbols and the offset applied is essential information. If the kernel
is compiled with debugging information, then print this information
during bootup using the same function as the panic notifier.

[ralf@linux-mips.org: Fixed spelling mistake pointed out by
Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>.]

Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
Cc: Aaro Koskinen <aaro.koskinen@nokia.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Cc: Jaedon Shin <jaedon.shin@gmail.com>
Cc: Jonas Gorski <jogo@openwrt.org>
Cc: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Cc: kernel-hardening@lists.openwall.com
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/12989/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/kernel/setup.c

index 3378fda..9b20a0f 100644 (file)
@@ -477,9 +477,18 @@ static void __init bootmem_init(void)
         */
        if (__pa_symbol(_text) > __pa_symbol(VMLINUX_LOAD_ADDRESS)) {
                unsigned long offset;
+               extern void show_kernel_relocation(const char *level);
 
                offset = __pa_symbol(_text) - __pa_symbol(VMLINUX_LOAD_ADDRESS);
                free_bootmem(__pa_symbol(VMLINUX_LOAD_ADDRESS), offset);
+
+#if defined(CONFIG_DEBUG_KERNEL) && defined(CONFIG_DEBUG_INFO)
+               /*
+                * This information is necessary when debugging the kernel
+                * But is a security vulnerability otherwise!
+                */
+               show_kernel_relocation(KERN_INFO);
+#endif
        }
 #endif