mm: numa: return the number of base pages altered by protection changes
[platform/adaptation/renesas_rcar/renesas_kernel.git] / mm / mprotect.c
index a597f2f..2666797 100644 (file)
@@ -112,6 +112,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;
 
        pmd = pmd_offset(pud, addr);
        do {
@@ -126,9 +127,10 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
                                                newprot, prot_numa);
 
                                if (nr_ptes) {
-                                       if (nr_ptes == HPAGE_PMD_NR)
-                                               pages++;
-
+                                       if (nr_ptes == HPAGE_PMD_NR) {
+                                               pages += HPAGE_PMD_NR;
+                                               nr_huge_updates++;
+                                       }
                                        continue;
                                }
                        }
@@ -141,6 +143,8 @@ static inline unsigned long change_pmd_range(struct vm_area_struct *vma,
                pages += this_pages;
        } while (pmd++, addr = next, addr != end);
 
+       if (nr_huge_updates)
+               count_vm_numa_events(NUMA_HUGE_PTE_UPDATES, nr_huge_updates);
        return pages;
 }