diff options
Diffstat (limited to 'fs/proc/task_mmu.c')
| -rw-r--r-- | fs/proc/task_mmu.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 15ddf4653a19..3dd5be96691b 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -4,6 +4,7 @@  #include <linux/hugetlb.h>  #include <linux/huge_mm.h>  #include <linux/mount.h> +#include <linux/ksm.h>  #include <linux/seq_file.h>  #include <linux/highmem.h>  #include <linux/ptrace.h> @@ -396,6 +397,7 @@ struct mem_size_stats {  	unsigned long swap;  	unsigned long shared_hugetlb;  	unsigned long private_hugetlb; +	unsigned long ksm;  	u64 pss;  	u64 pss_anon;  	u64 pss_file; @@ -452,6 +454,9 @@ static void smaps_account(struct mem_size_stats *mss, struct page *page,  			mss->lazyfree += size;  	} +	if (PageKsm(page)) +		mss->ksm += size; +  	mss->resident += size;  	/* Accumulate the size in pages that have been accessed. */  	if (young || page_is_young(page) || PageReferenced(page)) @@ -692,6 +697,9 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma)  #ifdef CONFIG_HAVE_ARCH_USERFAULTFD_MINOR  		[ilog2(VM_UFFD_MINOR)]	= "ui",  #endif /* CONFIG_HAVE_ARCH_USERFAULTFD_MINOR */ +#ifdef CONFIG_X86_USER_SHADOW_STACK +		[ilog2(VM_SHADOW_STACK)] = "ss", +#endif  	};  	size_t i; @@ -822,6 +830,7 @@ static void __show_smap(struct seq_file *m, const struct mem_size_stats *mss,  	SEQ_PUT_DEC(" kB\nPrivate_Dirty:  ", mss->private_dirty);  	SEQ_PUT_DEC(" kB\nReferenced:     ", mss->referenced);  	SEQ_PUT_DEC(" kB\nAnonymous:      ", mss->anonymous); +	SEQ_PUT_DEC(" kB\nKSM:            ", mss->ksm);  	SEQ_PUT_DEC(" kB\nLazyFree:       ", mss->lazyfree);  	SEQ_PUT_DEC(" kB\nAnonHugePages:  ", mss->anonymous_thp);  	SEQ_PUT_DEC(" kB\nShmemPmdMapped: ", mss->shmem_thp);  |