diff options
Diffstat (limited to 'mm/mprotect.c')
| -rw-r--r-- | mm/mprotect.c | 10 |
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 | ||
