aboutsummaryrefslogtreecommitdiffstats
path: root/mm/mprotect.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/mprotect.c')
-rw-r--r--mm/mprotect.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/mm/mprotect.c b/mm/mprotect.c
index a597f2ffcd6f..26667971c824 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -112,6 +112,7 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
112 pmd_t *pmd; 112 pmd_t *pmd;
113 unsigned long next; 113 unsigned long next;
114 unsigned long pages = 0; 114 unsigned long pages = 0;
115 unsigned long nr_huge_updates = 0;
115 116
116 pmd = pmd_offset(pud, addr); 117 pmd = pmd_offset(pud, addr);
117 do { 118 do {
@@ -126,9 +127,10 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
126 newprot, prot_numa); 127 newprot, prot_numa);
127 128
128 if (nr_ptes) { 129 if (nr_ptes) {
129 if (nr_ptes == HPAGE_PMD_NR) 130 if (nr_ptes == HPAGE_PMD_NR) {
130 pages++; 131 pages += HPAGE_PMD_NR;
131 132 nr_huge_updates++;
133 }
132 continue; 134 continue;
133 } 135 }
134 } 136 }
@@ -141,6 +143,8 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
141 pages += this_pages; 143 pages += this_pages;
142 } while (pmd++, addr = next, addr != end); 144 } while (pmd++, addr = next, addr != end);
143 145
146 if (nr_huge_updates)
147 count_vm_numa_events(NUMA_HUGE_PTE_UPDATES, nr_huge_updates);
144 return pages; 148 return pages;
145} 149}
146 150