lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20161219120900.GA30965@mobilestation>
Date:   Mon, 19 Dec 2016 15:09:00 +0300
From:   Serge Semin <fancer.lancer@...il.com>
To:     Matt Redfearn <matt.redfearn@...tec.com>
Cc:     ralf@...ux-mips.org, paul.burton@...tec.com, rabinv@...s.com,
        james.hogan@...tec.com, alexander.sverdlin@...ia.com,
        robh+dt@...nel.org, frowand.list@...il.com,
        Sergey.Semin@...latforms.ru, linux-mips@...ux-mips.org,
        devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 19/21] MIPS memblock: Add print out method of kernel
 virtual memory layout

On Mon, Dec 19, 2016 at 12:04:54PM +0000, Matt Redfearn <matt.redfearn@...tec.com> wrote:
Hello Matt.

> Hi Serge,
> 
> 
> On 19/12/16 02:07, Serge Semin wrote:
> >It's useful to have some printed map of the kernel virtual memory,
> >at least for debugging purpose.
> >
> >Signed-off-by: Serge Semin <fancer.lancer@...il.com>
> >---
> >  arch/mips/mm/init.c | 47 +++++++++++++++++++++++++++++++++++
> >  1 file changed, 47 insertions(+)
> >
> >diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
> >index 13a032f..35e7ba8 100644
> >--- a/arch/mips/mm/init.c
> >+++ b/arch/mips/mm/init.c
> >@@ -32,6 +32,7 @@
> >  #include <linux/hardirq.h>
> >  #include <linux/gfp.h>
> >  #include <linux/kcore.h>
> >+#include <linux/sizes.h>
> >  #include <asm/asm-offsets.h>
> >  #include <asm/bootinfo.h>
> >@@ -106,6 +107,49 @@ static void __init zone_sizes_init(void)
> >  }
> >  /*
> >+ * Print out kernel memory layout
> >+ */
> >+#define MLK(b, t) b, t, ((t) - (b)) >> 10
> >+#define MLM(b, t) b, t, ((t) - (b)) >> 20
> >+#define MLK_ROUNDUP(b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)
> >+static void __init mem_print_kmap_info(void)
> >+{
> >+	pr_notice("Virtual kernel memory layout:\n"
> >+		  "    lowmem  : 0x%08lx - 0x%08lx   (%4ld MB)\n"
> >+		  "    vmalloc : 0x%08lx - 0x%08lx   (%4ld MB)\n"
> >+#ifdef CONFIG_HIGHMEM
> >+		  "    pkmap   : 0x%08lx - 0x%08lx   (%4ld MB)\n"
> >+#endif
> >+		  "    fixmap  : 0x%08lx - 0x%08lx   (%4ld kB)\n"
> >+		  "      .text : 0x%p" " - 0x%p" "   (%4td kB)\n"
> >+		  "      .data : 0x%p" " - 0x%p" "   (%4td kB)\n"
> >+		  "      .init : 0x%p" " - 0x%p" "   (%4td kB)\n",
> >+		MLM(PAGE_OFFSET, (unsigned long)high_memory),
> >+		MLM(VMALLOC_START, VMALLOC_END),
> >+#ifdef CONFIG_HIGHMEM
> >+		MLM(PKMAP_BASE, (PKMAP_BASE) + (LAST_PKMAP)*(PAGE_SIZE)),
> >+#endif
> >+		MLK(FIXADDR_START, FIXADDR_TOP),
> >+		MLK_ROUNDUP(_text, _etext),
> >+		MLK_ROUNDUP(_sdata, _edata),
> >+		MLK_ROUNDUP(__init_begin, __init_end));
> 
> Please drop printing the kernel addresses, or at least only do it if KASLR
> is not turned on, otherwise you're removing the advantage of KASLR, that
> critical kernel addresses cannot be determined easily from userspace.
> 
> It may be better to merge the functionality of show_kernel_relocation
> http://lxr.free-electrons.com/source/arch/mips/kernel/relocate.c#L354
> into this function, but only print it under the same conditions as
> currently, i.e.
> #if defined(CONFIG_DEBUG_KERNEL) && defined(CONFIG_DEBUG_INFO)
> http://lxr.free-electrons.com/source/arch/mips/kernel/setup.c#L530
> 
> Thanks,
> Matt
> 

Understood. Will be fixed within the next patchset.

> >+
> >+	/* Check some fundamental inconsistencies. May add something else? */
> >+#ifdef CONFIG_HIGHMEM
> >+	BUILD_BUG_ON(VMALLOC_END < PAGE_OFFSET);
> >+	BUG_ON(VMALLOC_END < (unsigned long)high_memory);
> >+#endif
> >+	BUILD_BUG_ON((PKMAP_BASE) + (LAST_PKMAP)*(PAGE_SIZE) < PAGE_OFFSET);
> >+	BUG_ON((PKMAP_BASE) + (LAST_PKMAP)*(PAGE_SIZE) <
> >+					(unsigned long)high_memory);
> >+	BUILD_BUG_ON(FIXADDR_TOP < PAGE_OFFSET);
> >+	BUG_ON(FIXADDR_TOP < (unsigned long)high_memory);
> >+}
> >+#undef MLK
> >+#undef MLM
> >+#undef MLK_ROUNDUP
> >+
> >+/*
> >   * Not static inline because used by IP27 special magic initialization code
> >   */
> >  void setup_zero_pages(void)
> >@@ -492,6 +536,9 @@ void __init mem_init(void)
> >  	/* Free highmemory registered in memblocks */
> >  	mem_init_free_highmem();
> >+	/* Print out kernel memory layout */
> >+	mem_print_kmap_info();
> >+
> >  	/* Print out memory areas statistics */
> >  	mem_init_print_info(NULL);
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ