The following commit has been merged into the x86/build branch of tip:

Commit-ID:     a329975491aafcb1fb6e2fad0de22cae5c16154f
Gitweb:        
https://git.kernel.org/tip/a329975491aafcb1fb6e2fad0de22cae5c16154f
Author:        Kees Cook <keesc...@chromium.org>
AuthorDate:    Tue, 29 Oct 2019 14:13:50 -07:00
Committer:     Borislav Petkov <b...@suse.de>
CommitterDate: Mon, 04 Nov 2019 19:02:25 +01:00

x86/mm: Report actual image regions in /proc/iomem

The resource reservations in /proc/iomem made for the kernel image did
not reflect the gaps between text, rodata, and data. Add the "rodata"
resource and update the start/end calculations to match the respective
calls to free_kernel_image_pages().

Before (booted with "nokaslr" for easier comparison):

00100000-bffd9fff : System RAM
  01000000-01e011d0 : Kernel code
  01e011d1-025619bf : Kernel data
  02a95000-035fffff : Kernel bss

After:

00100000-bffd9fff : System RAM
  01000000-01e011d0 : Kernel code
  02000000-023d4fff : Kernel rodata
  02400000-025619ff : Kernel data
  02a95000-035fffff : Kernel bss

Signed-off-by: Kees Cook <keesc...@chromium.org>
Signed-off-by: Borislav Petkov <b...@suse.de>
Cc: Andy Lutomirski <l...@kernel.org>
Cc: Arnd Bergmann <a...@arndb.de>
Cc: Dave Hansen <dave.han...@linux.intel.com>
Cc: Dave Young <dyo...@redhat.com>
Cc: David Howells <dhowe...@redhat.com>
Cc: Heiko Carstens <heiko.carst...@de.ibm.com>
Cc: "H. Peter Anvin" <h...@zytor.com>
Cc: Ingo Molnar <mi...@redhat.com>
Cc: Juergen Gross <jgr...@suse.com>
Cc: linux-al...@vger.kernel.org
Cc: linux-a...@vger.kernel.org
Cc: linux-arm-ker...@lists.infradead.org
Cc: linux-c6x-...@linux-c6x.org
Cc: linux-i...@vger.kernel.org
Cc: linuxppc-dev@lists.ozlabs.org
Cc: linux-s...@vger.kernel.org
Cc: Michael Ellerman <m...@ellerman.id.au>
Cc: Michal Simek <mon...@monstr.eu>
Cc: Rick Edgecombe <rick.p.edgeco...@intel.com>
Cc: Robert Richter <rrich...@marvell.com>
Cc: Segher Boessenkool <seg...@kernel.crashing.org>
Cc: Thomas Gleixner <t...@linutronix.de>
Cc: Thomas Lendacky <thomas.lenda...@amd.com>
Cc: Will Deacon <w...@kernel.org>
Cc: x86-ml <x...@kernel.org>
Cc: Yoshinori Sato <ys...@users.sourceforge.jp>
Link: https://lkml.kernel.org/r/20191029211351.13243-29-keesc...@chromium.org
---
 arch/x86/kernel/setup.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index 77ea96b..591e885 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -143,6 +143,13 @@ struct boot_params boot_params;
 /*
  * Machine setup..
  */
+static struct resource rodata_resource = {
+       .name   = "Kernel rodata",
+       .start  = 0,
+       .end    = 0,
+       .flags  = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM
+};
+
 static struct resource data_resource = {
        .name   = "Kernel data",
        .start  = 0,
@@ -951,7 +958,9 @@ void __init setup_arch(char **cmdline_p)
 
        code_resource.start = __pa_symbol(_text);
        code_resource.end = __pa_symbol(_etext)-1;
-       data_resource.start = __pa_symbol(_etext);
+       rodata_resource.start = __pa_symbol(__start_rodata);
+       rodata_resource.end = __pa_symbol(__end_rodata)-1;
+       data_resource.start = __pa_symbol(_sdata);
        data_resource.end = __pa_symbol(_edata)-1;
        bss_resource.start = __pa_symbol(__bss_start);
        bss_resource.end = __pa_symbol(__bss_stop)-1;
@@ -1040,6 +1049,7 @@ void __init setup_arch(char **cmdline_p)
 
        /* after parse_early_param, so could debug it */
        insert_resource(&iomem_resource, &code_resource);
+       insert_resource(&iomem_resource, &rodata_resource);
        insert_resource(&iomem_resource, &data_resource);
        insert_resource(&iomem_resource, &bss_resource);
 

Reply via email to