Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Borislav Petkov <bp@alien8.de>
Cc: linux-arch@vger.kernel.org, linux-s390@vger.kernel.org,
	Michal Simek <monstr@monstr.eu>,
	linux-ia64@vger.kernel.org, Kees Cook <keescook@chromium.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Segher Boessenkool <segher@kernel.crashing.org>,
	linuxppc-dev@lists.ozlabs.org,
	Heiko Carstens <heiko.carstens@de.ibm.com>,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	Andy Lutomirski <luto@kernel.org>,
	linux-alpha@vger.kernel.org,
	Rick Edgecombe <rick.p.edgecombe@intel.com>,
	Will Deacon <will@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-c6x-dev@linux-c6x.org
Subject: [PATCH v3 27/29] x86/mm: Report which part of kernel image is freed
Date: Tue, 29 Oct 2019 14:13:49 -0700
Message-ID: <20191029211351.13243-28-keescook@chromium.org> (raw)
In-Reply-To: <20191029211351.13243-1-keescook@chromium.org>

The memory freeing report wasn't very useful for figuring out which
parts of the kernel image were being freed. Add the details for clearer
reporting in dmesg.

Before:

[    2.150450] Freeing unused kernel image memory: 1348K
[    2.154574] Write protecting the kernel read-only data: 20480k
[    2.157641] Freeing unused kernel image memory: 2040K
[    2.158827] Freeing unused kernel image memory: 172K

After:

[    2.329678] Freeing unused kernel image (initmem) memory: 1348K
[    2.331953] Write protecting the kernel read-only data: 20480k
[    2.335361] Freeing unused kernel image (text/rodata gap) memory: 2040K
[    2.336927] Freeing unused kernel image (rodata/data gap) memory: 172K

Signed-off-by: Kees Cook <keescook@chromium.org>
---
 arch/x86/include/asm/processor.h | 2 +-
 arch/x86/mm/init.c               | 8 ++++----
 arch/x86/mm/init_64.c            | 6 ++++--
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index 6e0a3b43d027..790f250d39a8 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -958,7 +958,7 @@ static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves)
 
 extern unsigned long arch_align_stack(unsigned long sp);
 void free_init_pages(const char *what, unsigned long begin, unsigned long end);
-extern void free_kernel_image_pages(void *begin, void *end);
+extern void free_kernel_image_pages(const char *what, void *begin, void *end);
 
 void default_idle(void);
 #ifdef	CONFIG_XEN
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index fd10d91a6115..e7bb483557c9 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -829,14 +829,13 @@ void free_init_pages(const char *what, unsigned long begin, unsigned long end)
  * used for the kernel image only.  free_init_pages() will do the
  * right thing for either kind of address.
  */
-void free_kernel_image_pages(void *begin, void *end)
+void free_kernel_image_pages(const char *what, void *begin, void *end)
 {
 	unsigned long begin_ul = (unsigned long)begin;
 	unsigned long end_ul = (unsigned long)end;
 	unsigned long len_pages = (end_ul - begin_ul) >> PAGE_SHIFT;
 
-
-	free_init_pages("unused kernel image", begin_ul, end_ul);
+	free_init_pages(what, begin_ul, end_ul);
 
 	/*
 	 * PTI maps some of the kernel into userspace.  For performance,
@@ -865,7 +864,8 @@ void __ref free_initmem(void)
 
 	mem_encrypt_free_decrypted_mem();
 
-	free_kernel_image_pages(&__init_begin, &__init_end);
+	free_kernel_image_pages("unused kernel image (initmem)",
+				&__init_begin, &__init_end);
 }
 
 #ifdef CONFIG_BLK_DEV_INITRD
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index e67ddca8b7a8..dcb9bc961b39 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -1334,8 +1334,10 @@ void mark_rodata_ro(void)
 	set_memory_ro(start, (end-start) >> PAGE_SHIFT);
 #endif
 
-	free_kernel_image_pages((void *)text_end, (void *)rodata_start);
-	free_kernel_image_pages((void *)rodata_end, (void *)_sdata);
+	free_kernel_image_pages("unused kernel image (text/rodata gap)",
+				(void *)text_end, (void *)rodata_start);
+	free_kernel_image_pages("unused kernel image (rodata/data gap)",
+				(void *)rodata_end, (void *)_sdata);
 
 	debug_checkwx();
 }
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply index

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-29 21:13 [PATCH v3 00/29] vmlinux.lds.h: Refactor EXCEPTION_TABLE and NOTES Kees Cook
2019-10-29 21:13 ` [PATCH v3 01/29] powerpc: Rename "notes" PT_NOTE to "note" Kees Cook
2019-10-29 21:13 ` [PATCH v3 02/29] powerpc: Remove PT_NOTE workaround Kees Cook
2019-10-29 21:13 ` [PATCH v3 03/29] powerpc: Rename PT_LOAD identifier "kernel" to "text" Kees Cook
2019-10-29 21:13 ` [PATCH v3 04/29] alpha: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 05/29] ia64: Rename PT_LOAD identifier "code" " Kees Cook
2019-10-29 21:13 ` [PATCH v3 06/29] s390: Move RO_DATA into "text" PT_LOAD Program Header Kees Cook
2019-10-29 21:13 ` [PATCH v3 07/29] x86: Restore "text" Program Header with dummy section Kees Cook
2019-10-29 21:13 ` [PATCH v3 08/29] vmlinux.lds.h: Provide EMIT_PT_NOTE to indicate export of .notes Kees Cook
2019-10-29 21:13 ` [PATCH v3 09/29] vmlinux.lds.h: Move Program Header restoration into NOTES macro Kees Cook
2019-10-29 21:13 ` [PATCH v3 10/29] vmlinux.lds.h: Move NOTES into RO_DATA Kees Cook
2019-10-29 21:13 ` [PATCH v3 11/29] vmlinux.lds.h: Replace RODATA with RO_DATA Kees Cook
2019-10-29 21:13 ` [PATCH v3 12/29] vmlinux.lds.h: Replace RO_DATA_SECTION " Kees Cook
2019-10-29 21:13 ` [PATCH v3 13/29] vmlinux.lds.h: Replace RW_DATA_SECTION with RW_DATA Kees Cook
2019-10-29 21:13 ` [PATCH v3 14/29] vmlinux.lds.h: Allow EXCEPTION_TABLE to live in RO_DATA Kees Cook
2019-10-29 21:13 ` [PATCH v3 15/29] x86: Actually use _etext for end of text segment Kees Cook
2019-10-29 21:13 ` [PATCH v3 16/29] x86: Move EXCEPTION_TABLE to RO_DATA segment Kees Cook
2019-10-29 21:13 ` [PATCH v3 17/29] alpha: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 18/29] arm64: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 19/29] c6x: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 20/29] h8300: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 21/29] ia64: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 22/29] microblaze: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 23/29] parisc: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 24/29] powerpc: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 25/29] xtensa: " Kees Cook
2019-10-29 21:13 ` [PATCH v3 26/29] x86/mm: Remove redundant &s on addresses Kees Cook
2019-10-29 21:13 ` Kees Cook [this message]
2019-10-29 21:13 ` [PATCH v3 28/29] x86/mm: Report actual image regions in /proc/iomem Kees Cook
2019-10-29 21:13 ` [PATCH v3 29/29] x86: Use INT3 instead of NOP for linker fill bytes Kees Cook

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191029211351.13243-28-keescook@chromium.org \
    --to=keescook@chromium.org \
    --cc=arnd@arndb.de \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=heiko.carstens@de.ibm.com \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-c6x-dev@linux-c6x.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=luto@kernel.org \
    --cc=monstr@monstr.eu \
    --cc=mpe@ellerman.id.au \
    --cc=rick.p.edgecombe@intel.com \
    --cc=segher@kernel.crashing.org \
    --cc=will@kernel.org \
    --cc=ysato@users.sourceforge.jp \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-ARM-Kernel Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-arm-kernel/0 linux-arm-kernel/git/0.git
	git clone --mirror https://lore.kernel.org/linux-arm-kernel/1 linux-arm-kernel/git/1.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-arm-kernel linux-arm-kernel/ https://lore.kernel.org/linux-arm-kernel \
		linux-arm-kernel@lists.infradead.org
	public-inbox-index linux-arm-kernel

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-arm-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git