From: Thomas Gleixner <tglx@linutronix.de> To: LKML <linux-kernel@vger.kernel.org> Cc: Dave Hansen <dave.hansen@linux.intel.com>, Andy Lutomirski <luto@kernel.org>, Ingo Molnar <mingo@kernel.org>, Borislav Petkov <bp@alien8.de>, Brian Gerst <brgerst@gmail.com>, Denys Vlasenko <dvlasenk@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>, Josh Poimboeuf <jpoimboe@redhat.com>, Linus Torvalds <torvalds@linux-foundation.org>, Peter Zijlstra <peterz@infradead.org>, Rik van Riel <riel@redhat.com>, daniel.gruss@iaik.tugraz.at, hughd@google.com, keescook@google.com, linux-mm@kvack.org, michael.schwarz@iaik.tugraz.at, moritz.lipp@iaik.tugraz.at, richard.fellner@student.tugraz.at Subject: [patch V2 3/5] x86/dump_pagetables: Check KAISER shadow page table for WX pages Date: Mon, 27 Nov 2017 00:14:06 +0100 [thread overview] Message-ID: <20171126232414.481903103@linutronix.de> (raw) In-Reply-To: 20171126231403.657575796@linutronix.de [-- Attachment #1: x86-kaiser--Check-shadow-pagetable-for-WX-mappings.patch --] [-- Type: text/plain, Size: 2661 bytes --] ptdump_walk_pgd_level_checkwx() checks the kernel page table for WX pages, but does not check the KAISER shadow page table. Restructure the code so that dmesg output is selected by an explicit argument and not implicit via checking the pgd argument for !NULL. Add the check for the shadow page table. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- arch/x86/include/asm/pgtable.h | 1 + arch/x86/mm/debug_pagetables.c | 2 +- arch/x86/mm/dump_pagetables.c | 27 ++++++++++++++++++++++----- 3 files changed, 24 insertions(+), 6 deletions(-) --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -28,6 +28,7 @@ extern pgd_t early_top_pgt[PTRS_PER_PGD] int __init __early_make_pgtable(unsigned long address, pmdval_t pmd); void ptdump_walk_pgd_level(struct seq_file *m, pgd_t *pgd); +void ptdump_walk_pgd_level_debugfs(struct seq_file *m, pgd_t *pgd); void ptdump_walk_pgd_level_checkwx(void); #ifdef CONFIG_DEBUG_WX --- a/arch/x86/mm/debug_pagetables.c +++ b/arch/x86/mm/debug_pagetables.c @@ -5,7 +5,7 @@ static int ptdump_show(struct seq_file *m, void *v) { - ptdump_walk_pgd_level(m, NULL); + ptdump_walk_pgd_level_debugfs(m, NULL); return 0; } --- a/arch/x86/mm/dump_pagetables.c +++ b/arch/x86/mm/dump_pagetables.c @@ -447,7 +447,7 @@ static inline bool is_hypervisor_range(i } static void ptdump_walk_pgd_level_core(struct seq_file *m, pgd_t *pgd, - bool checkwx) + bool checkwx, bool dmesg) { #ifdef CONFIG_X86_64 pgd_t *start = (pgd_t *) &init_top_pgt; @@ -460,7 +460,7 @@ static void ptdump_walk_pgd_level_core(s if (pgd) { start = pgd; - st.to_dmesg = true; + st.to_dmesg = dmesg; } st.check_wx = checkwx; @@ -498,13 +498,30 @@ static void ptdump_walk_pgd_level_core(s void ptdump_walk_pgd_level(struct seq_file *m, pgd_t *pgd) { - ptdump_walk_pgd_level_core(m, pgd, false); + ptdump_walk_pgd_level_core(m, pgd, false, true); +} + +void ptdump_walk_pgd_level_debugfs(struct seq_file *m, pgd_t *pgd) +{ + ptdump_walk_pgd_level_core(m, pgd, false, false); +} +EXPORT_SYMBOL_GPL(ptdump_walk_pgd_level_debugfs); + +void ptdump_walk_shadow_pgd_level_checkwx(void) +{ +#ifdef CONFIG_KAISER + pgd_t *pgd = (pgd_t *) &init_top_pgt; + + pr_info("x86/mm: Checking shadow page tables\n"); + pgd += PTRS_PER_PGD; + ptdump_walk_pgd_level_core(NULL, pgd, true, false); +#endif } -EXPORT_SYMBOL_GPL(ptdump_walk_pgd_level); void ptdump_walk_pgd_level_checkwx(void) { - ptdump_walk_pgd_level_core(NULL, NULL, true); + ptdump_walk_pgd_level_core(NULL, NULL, true, false); + ptdump_walk_shadow_pgd_level_checkwx(); } static int __init pt_dump_init(void)
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de> To: LKML <linux-kernel@vger.kernel.org> Cc: Dave Hansen <dave.hansen@linux.intel.com>, Andy Lutomirski <luto@kernel.org>, Ingo Molnar <mingo@kernel.org>, Borislav Petkov <bp@alien8.de>, Brian Gerst <brgerst@gmail.com>, Denys Vlasenko <dvlasenk@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>, Josh Poimboeuf <jpoimboe@redhat.com>, Linus Torvalds <torvalds@linux-foundation.org>, Peter Zijlstra <peterz@infradead.org>, Rik van Riel <riel@redhat.com>, daniel.gruss@iaik.tugraz.at, hughd@google.com, keescook@google.com, linux-mm@kvack.org, michael.schwarz@iaik.tugraz.at, moritz.lipp@iaik.tugraz.at, richard.fellner@student.tugraz.at Subject: [patch V2 3/5] x86/dump_pagetables: Check KAISER shadow page table for WX pages Date: Mon, 27 Nov 2017 00:14:06 +0100 [thread overview] Message-ID: <20171126232414.481903103@linutronix.de> (raw) In-Reply-To: 20171126231403.657575796@linutronix.de [-- Attachment #1: x86-kaiser--Check-shadow-pagetable-for-WX-mappings.patch --] [-- Type: text/plain, Size: 2888 bytes --] ptdump_walk_pgd_level_checkwx() checks the kernel page table for WX pages, but does not check the KAISER shadow page table. Restructure the code so that dmesg output is selected by an explicit argument and not implicit via checking the pgd argument for !NULL. Add the check for the shadow page table. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- arch/x86/include/asm/pgtable.h | 1 + arch/x86/mm/debug_pagetables.c | 2 +- arch/x86/mm/dump_pagetables.c | 27 ++++++++++++++++++++++----- 3 files changed, 24 insertions(+), 6 deletions(-) --- a/arch/x86/include/asm/pgtable.h +++ b/arch/x86/include/asm/pgtable.h @@ -28,6 +28,7 @@ extern pgd_t early_top_pgt[PTRS_PER_PGD] int __init __early_make_pgtable(unsigned long address, pmdval_t pmd); void ptdump_walk_pgd_level(struct seq_file *m, pgd_t *pgd); +void ptdump_walk_pgd_level_debugfs(struct seq_file *m, pgd_t *pgd); void ptdump_walk_pgd_level_checkwx(void); #ifdef CONFIG_DEBUG_WX --- a/arch/x86/mm/debug_pagetables.c +++ b/arch/x86/mm/debug_pagetables.c @@ -5,7 +5,7 @@ static int ptdump_show(struct seq_file *m, void *v) { - ptdump_walk_pgd_level(m, NULL); + ptdump_walk_pgd_level_debugfs(m, NULL); return 0; } --- a/arch/x86/mm/dump_pagetables.c +++ b/arch/x86/mm/dump_pagetables.c @@ -447,7 +447,7 @@ static inline bool is_hypervisor_range(i } static void ptdump_walk_pgd_level_core(struct seq_file *m, pgd_t *pgd, - bool checkwx) + bool checkwx, bool dmesg) { #ifdef CONFIG_X86_64 pgd_t *start = (pgd_t *) &init_top_pgt; @@ -460,7 +460,7 @@ static void ptdump_walk_pgd_level_core(s if (pgd) { start = pgd; - st.to_dmesg = true; + st.to_dmesg = dmesg; } st.check_wx = checkwx; @@ -498,13 +498,30 @@ static void ptdump_walk_pgd_level_core(s void ptdump_walk_pgd_level(struct seq_file *m, pgd_t *pgd) { - ptdump_walk_pgd_level_core(m, pgd, false); + ptdump_walk_pgd_level_core(m, pgd, false, true); +} + +void ptdump_walk_pgd_level_debugfs(struct seq_file *m, pgd_t *pgd) +{ + ptdump_walk_pgd_level_core(m, pgd, false, false); +} +EXPORT_SYMBOL_GPL(ptdump_walk_pgd_level_debugfs); + +void ptdump_walk_shadow_pgd_level_checkwx(void) +{ +#ifdef CONFIG_KAISER + pgd_t *pgd = (pgd_t *) &init_top_pgt; + + pr_info("x86/mm: Checking shadow page tables\n"); + pgd += PTRS_PER_PGD; + ptdump_walk_pgd_level_core(NULL, pgd, true, false); +#endif } -EXPORT_SYMBOL_GPL(ptdump_walk_pgd_level); void ptdump_walk_pgd_level_checkwx(void) { - ptdump_walk_pgd_level_core(NULL, NULL, true); + ptdump_walk_pgd_level_core(NULL, NULL, true, false); + ptdump_walk_shadow_pgd_level_checkwx(); } static int __init pt_dump_init(void) -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-11-26 23:25 UTC|newest] Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-11-26 23:14 [patch V2 0/5] x86/kaiser: Boot time disabling and debug support Thomas Gleixner 2017-11-26 23:14 ` Thomas Gleixner 2017-11-26 23:14 ` [patch V2 1/5] x86/kaiser: Respect disabled CPU features Thomas Gleixner 2017-11-26 23:14 ` Thomas Gleixner 2017-11-27 9:57 ` Peter Zijlstra 2017-11-27 9:57 ` Peter Zijlstra 2017-11-27 11:47 ` Thomas Gleixner 2017-11-27 11:47 ` Thomas Gleixner 2017-11-27 12:31 ` Brian Gerst 2017-11-27 12:31 ` Brian Gerst 2017-11-27 13:18 ` Thomas Gleixner 2017-11-27 13:18 ` Thomas Gleixner 2017-11-27 18:11 ` Dave Hansen 2017-11-27 18:11 ` Dave Hansen 2017-11-27 18:37 ` Kees Cook 2017-11-27 18:37 ` Kees Cook 2017-11-26 23:14 ` [patch V2 2/5] x86/kaiser: Simplify disabling of global pages Thomas Gleixner 2017-11-26 23:14 ` Thomas Gleixner 2017-11-27 11:49 ` Thomas Gleixner 2017-11-27 11:49 ` Thomas Gleixner 2017-11-27 18:15 ` Dave Hansen 2017-11-27 18:15 ` Dave Hansen 2017-11-27 20:28 ` Thomas Gleixner 2017-11-27 20:28 ` Thomas Gleixner 2017-11-26 23:14 ` Thomas Gleixner [this message] 2017-11-26 23:14 ` [patch V2 3/5] x86/dump_pagetables: Check KAISER shadow page table for WX pages Thomas Gleixner 2017-11-27 18:17 ` Dave Hansen 2017-11-27 18:17 ` Dave Hansen 2017-11-26 23:14 ` [patch V2 4/5] x86/mm/debug_pagetables: Allow dumping current pagetables Thomas Gleixner 2017-11-26 23:14 ` Thomas Gleixner 2017-11-27 9:41 ` Peter Zijlstra 2017-11-27 9:41 ` Peter Zijlstra 2017-11-27 10:06 ` [PATCH] vfs: Add PERM_* symbolic helpers for common file mode/permissions Ingo Molnar 2017-11-27 10:06 ` Ingo Molnar 2017-11-27 19:21 ` Linus Torvalds 2017-11-27 19:21 ` Linus Torvalds 2017-11-28 10:54 ` Ingo Molnar 2017-11-28 10:54 ` Ingo Molnar 2017-11-28 11:12 ` Ingo Molnar 2017-11-28 11:12 ` Ingo Molnar 2017-11-29 8:52 ` Michael Ellerman 2017-11-29 8:52 ` Michael Ellerman 2017-11-27 18:18 ` [patch V2 4/5] x86/mm/debug_pagetables: Allow dumping current pagetables Dave Hansen 2017-11-27 18:18 ` Dave Hansen 2017-11-26 23:14 ` [patch V2 5/5] x86/kaiser: Add boottime disable switch Thomas Gleixner 2017-11-26 23:14 ` Thomas Gleixner 2017-11-27 9:48 ` Peter Zijlstra 2017-11-27 9:48 ` Peter Zijlstra 2017-11-27 10:22 ` Peter Zijlstra 2017-11-27 10:22 ` Peter Zijlstra 2017-11-27 11:50 ` Thomas Gleixner 2017-11-27 11:50 ` Thomas Gleixner 2017-11-27 12:49 ` Peter Zijlstra 2017-11-27 12:49 ` Peter Zijlstra 2017-11-27 21:43 ` Peter Zijlstra 2017-11-27 21:43 ` Peter Zijlstra 2017-11-27 18:22 ` Dave Hansen 2017-11-27 18:22 ` Dave Hansen 2017-11-27 19:00 ` Thomas Gleixner 2017-11-27 19:00 ` Thomas Gleixner 2017-11-27 19:18 ` Josh Poimboeuf 2017-11-27 19:18 ` Josh Poimboeuf 2017-11-27 20:47 ` Thomas Gleixner 2017-11-27 20:47 ` Thomas Gleixner
Reply instructions: You may reply publicly 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=20171126232414.481903103@linutronix.de \ --to=tglx@linutronix.de \ --cc=bp@alien8.de \ --cc=brgerst@gmail.com \ --cc=daniel.gruss@iaik.tugraz.at \ --cc=dave.hansen@linux.intel.com \ --cc=dvlasenk@redhat.com \ --cc=hpa@zytor.com \ --cc=hughd@google.com \ --cc=jpoimboe@redhat.com \ --cc=keescook@google.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=luto@kernel.org \ --cc=michael.schwarz@iaik.tugraz.at \ --cc=mingo@kernel.org \ --cc=moritz.lipp@iaik.tugraz.at \ --cc=peterz@infradead.org \ --cc=richard.fellner@student.tugraz.at \ --cc=riel@redhat.com \ --cc=torvalds@linux-foundation.org \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.