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
| ||
|
Date: Thu, 18 Feb 2016 12:24:25 -0800 From: tip-bot for Dave Hansen <tipbot@...or.com> To: linux-tip-commits@...r.kernel.org Cc: ldufour@...ux.vnet.ibm.com, dave.hansen@...ux.intel.com, vbabka@...e.cz, bp@...e.de, riel@...hat.com, jmarchan@...hat.com, dave@...1.net, koct9i@...il.com, peterz@...radead.org, hannes@...xchg.org, mwilliamson@...o-software.com, brgerst@...il.com, tglx@...utronix.de, hpa@...or.com, linux-kernel@...r.kernel.org, bp@...en8.de, viro@...iv.linux.org.uk, pbonzini@...hat.com, luto@...capital.net, bhe@...hat.com, msalter@...hat.com, mingo@...nel.org, mhocko@...e.com, n-horiguchi@...jp.nec.com, kirill.shutemov@...ux.intel.com, jkosina@...e.cz, akpm@...ux-foundation.org, torvalds@...ux-foundation.org, jroedel@...e.de, dvlasenk@...hat.com, dyoung@...hat.com Subject: [tip:mm/pkeys] x86/mm/pkeys: Dump pkey from VMA in /proc/pid/ smaps Commit-ID: c1192f8428414679c8126180e690f8daa1d4d98a Gitweb: http://git.kernel.org/tip/c1192f8428414679c8126180e690f8daa1d4d98a Author: Dave Hansen <dave.hansen@...ux.intel.com> AuthorDate: Fri, 12 Feb 2016 13:02:27 -0800 Committer: Ingo Molnar <mingo@...nel.org> CommitDate: Thu, 18 Feb 2016 19:46:29 +0100 x86/mm/pkeys: Dump pkey from VMA in /proc/pid/smaps The protection key can now be just as important as read/write permissions on a VMA. We need some debug mechanism to help figure out if it is in play. smaps seems like a logical place to expose it. arch/x86/kernel/setup.c is a bit of a weirdo place to put this code, but it already had seq_file.h and there was not a much better existing place to put it. We also use no #ifdef. If protection keys is .config'd out we will effectively get the same function as if we used the weak generic function. Signed-off-by: Dave Hansen <dave.hansen@...ux.intel.com> Reviewed-by: Thomas Gleixner <tglx@...utronix.de> Cc: Al Viro <viro@...iv.linux.org.uk> Cc: Andrew Morton <akpm@...ux-foundation.org> Cc: Andy Lutomirski <luto@...capital.net> Cc: Baoquan He <bhe@...hat.com> Cc: Borislav Petkov <bp@...en8.de> Cc: Borislav Petkov <bp@...e.de> Cc: Brian Gerst <brgerst@...il.com> Cc: Dave Hansen <dave@...1.net> Cc: Dave Young <dyoung@...hat.com> Cc: Denys Vlasenko <dvlasenk@...hat.com> Cc: H. Peter Anvin <hpa@...or.com> Cc: Jerome Marchand <jmarchan@...hat.com> Cc: Jiri Kosina <jkosina@...e.cz> Cc: Joerg Roedel <jroedel@...e.de> Cc: Johannes Weiner <hannes@...xchg.org> Cc: Kirill A. Shutemov <kirill.shutemov@...ux.intel.com> Cc: Konstantin Khlebnikov <koct9i@...il.com> Cc: Laurent Dufour <ldufour@...ux.vnet.ibm.com> Cc: Linus Torvalds <torvalds@...ux-foundation.org> Cc: Mark Salter <msalter@...hat.com> Cc: Mark Williamson <mwilliamson@...o-software.com> Cc: Michal Hocko <mhocko@...e.com> Cc: Naoya Horiguchi <n-horiguchi@...jp.nec.com> Cc: Paolo Bonzini <pbonzini@...hat.com> Cc: Peter Zijlstra <peterz@...radead.org> Cc: Rik van Riel <riel@...hat.com> Cc: Vlastimil Babka <vbabka@...e.cz> Cc: linux-kernel@...r.kernel.org Cc: linux-mm@...ck.org Link: http://lkml.kernel.org/r/20160212210227.4F8EB3F8@viggo.jf.intel.com Signed-off-by: Ingo Molnar <mingo@...nel.org> --- arch/x86/kernel/setup.c | 9 +++++++++ fs/proc/task_mmu.c | 14 ++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index d3d80e6..7260f99 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -112,6 +112,7 @@ #include <asm/alternative.h> #include <asm/prom.h> #include <asm/microcode.h> +#include <asm/mmu_context.h> /* * max_low_pfn_mapped: highest direct mapped pfn under 4GB @@ -1282,3 +1283,11 @@ static int __init register_kernel_offset_dumper(void) return 0; } __initcall(register_kernel_offset_dumper); + +void arch_show_smap(struct seq_file *m, struct vm_area_struct *vma) +{ + if (!boot_cpu_has(X86_FEATURE_OSPKE)) + return; + + seq_printf(m, "ProtectionKey: %8u\n", vma_pkey(vma)); +} diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index fa95ab2..9df4316 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -660,11 +660,20 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma) [ilog2(VM_MERGEABLE)] = "mg", [ilog2(VM_UFFD_MISSING)]= "um", [ilog2(VM_UFFD_WP)] = "uw", +#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS + /* These come out via ProtectionKey: */ + [ilog2(VM_PKEY_BIT0)] = "", + [ilog2(VM_PKEY_BIT1)] = "", + [ilog2(VM_PKEY_BIT2)] = "", + [ilog2(VM_PKEY_BIT3)] = "", +#endif }; size_t i; seq_puts(m, "VmFlags: "); for (i = 0; i < BITS_PER_LONG; i++) { + if (!mnemonics[i][0]) + continue; if (vma->vm_flags & (1UL << i)) { seq_printf(m, "%c%c ", mnemonics[i][0], mnemonics[i][1]); @@ -702,6 +711,10 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask, } #endif /* HUGETLB_PAGE */ +void __weak arch_show_smap(struct seq_file *m, struct vm_area_struct *vma) +{ +} + static int show_smap(struct seq_file *m, void *v, int is_pid) { struct vm_area_struct *vma = v; @@ -783,6 +796,7 @@ static int show_smap(struct seq_file *m, void *v, int is_pid) (vma->vm_flags & VM_LOCKED) ? (unsigned long)(mss.pss >> (10 + PSS_SHIFT)) : 0); + arch_show_smap(m, vma); show_smap_vma_flags(m, vma); m_cache_vma(m, vma); return 0;
Powered by blists - more mailing lists