diff options
Diffstat (limited to 'fs/proc/task_mmu.c')
| -rw-r--r-- | fs/proc/task_mmu.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index fa95ab2d3674..9df431642042 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) | |||
| 660 | [ilog2(VM_MERGEABLE)] = "mg", | 660 | [ilog2(VM_MERGEABLE)] = "mg", |
| 661 | [ilog2(VM_UFFD_MISSING)]= "um", | 661 | [ilog2(VM_UFFD_MISSING)]= "um", |
| 662 | [ilog2(VM_UFFD_WP)] = "uw", | 662 | [ilog2(VM_UFFD_WP)] = "uw", |
| 663 | #ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS | ||
| 664 | /* These come out via ProtectionKey: */ | ||
| 665 | [ilog2(VM_PKEY_BIT0)] = "", | ||
| 666 | [ilog2(VM_PKEY_BIT1)] = "", | ||
| 667 | [ilog2(VM_PKEY_BIT2)] = "", | ||
| 668 | [ilog2(VM_PKEY_BIT3)] = "", | ||
| 669 | #endif | ||
| 663 | }; | 670 | }; |
| 664 | size_t i; | 671 | size_t i; |
| 665 | 672 | ||
| 666 | seq_puts(m, "VmFlags: "); | 673 | seq_puts(m, "VmFlags: "); |
| 667 | for (i = 0; i < BITS_PER_LONG; i++) { | 674 | for (i = 0; i < BITS_PER_LONG; i++) { |
| 675 | if (!mnemonics[i][0]) | ||
| 676 | continue; | ||
| 668 | if (vma->vm_flags & (1UL << i)) { | 677 | if (vma->vm_flags & (1UL << i)) { |
| 669 | seq_printf(m, "%c%c ", | 678 | seq_printf(m, "%c%c ", |
| 670 | mnemonics[i][0], mnemonics[i][1]); | 679 | mnemonics[i][0], mnemonics[i][1]); |
| @@ -702,6 +711,10 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask, | |||
| 702 | } | 711 | } |
| 703 | #endif /* HUGETLB_PAGE */ | 712 | #endif /* HUGETLB_PAGE */ |
| 704 | 713 | ||
| 714 | void __weak arch_show_smap(struct seq_file *m, struct vm_area_struct *vma) | ||
| 715 | { | ||
| 716 | } | ||
| 717 | |||
| 705 | static int show_smap(struct seq_file *m, void *v, int is_pid) | 718 | static int show_smap(struct seq_file *m, void *v, int is_pid) |
| 706 | { | 719 | { |
| 707 | struct vm_area_struct *vma = v; | 720 | struct vm_area_struct *vma = v; |
| @@ -783,6 +796,7 @@ static int show_smap(struct seq_file *m, void *v, int is_pid) | |||
| 783 | (vma->vm_flags & VM_LOCKED) ? | 796 | (vma->vm_flags & VM_LOCKED) ? |
| 784 | (unsigned long)(mss.pss >> (10 + PSS_SHIFT)) : 0); | 797 | (unsigned long)(mss.pss >> (10 + PSS_SHIFT)) : 0); |
| 785 | 798 | ||
| 799 | arch_show_smap(m, vma); | ||
| 786 | show_smap_vma_flags(m, vma); | 800 | show_smap_vma_flags(m, vma); |
| 787 | m_cache_vma(m, vma); | 801 | m_cache_vma(m, vma); |
| 788 | return 0; | 802 | return 0; |
