aboutsummaryrefslogtreecommitdiff
path: root/mm/mprotect.c
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-12-08 21:51:36 +0000
committerMark Brown <broonie@linaro.org>2013-12-08 21:51:36 +0000
commit3ba8f67bac8f610b5148b93280387d3dccf7d0dd (patch)
tree6a17c20128c75787aad74ca2e98c128bd4ed8e55 /mm/mprotect.c
parenta8eb5f1e4b10d8b7992ed0e6c0915687339201c3 (diff)
parent925b33756551cb5304774d2e2b39e26e82308a68 (diff)
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-android
Diffstat (limited to 'mm/mprotect.c')
-rw-r--r--mm/mprotect.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/mprotect.c b/mm/mprotect.c
index 5d80adfabec8..ea4a0f32f8e1 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -135,6 +135,7 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
pmd_t *pmd;
unsigned long next;
unsigned long pages = 0;
+ unsigned long nr_huge_updates = 0;
bool all_same_node;
pmd = pmd_offset(pud, addr);
@@ -145,7 +146,8 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
split_huge_page_pmd(vma, addr, pmd);
else if (change_huge_pmd(vma, pmd, addr, newprot,
prot_numa)) {
- pages++;
+ pages += HPAGE_PMD_NR;
+ nr_huge_updates++;
continue;
}
/* fall through */
@@ -165,6 +167,9 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
change_pmd_protnuma(vma->vm_mm, addr, pmd);
} while (pmd++, addr = next, addr != end);
+ if (nr_huge_updates)
+ count_vm_numa_events(NUMA_HUGE_PTE_UPDATES, nr_huge_updates);
+
return pages;
}