summaryrefslogtreecommitdiffstats
path: root/mm/page_table_check.c
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <willy@infradead.org>2023-08-02 16:13:30 +0100
committerAndrew Morton <akpm@linux-foundation.org>2023-08-24 16:20:18 -0700
commita379322022c0961fe0b638cdd842d3c38eeff92c (patch)
treed72fcdc430b08776886998c2c1887bb7478439a1 /mm/page_table_check.c
parentf9bff0e31881d03badf191d3b0005839391f5f2b (diff)
downloadlinux-stable-a379322022c0961fe0b638cdd842d3c38eeff92c.tar.gz
linux-stable-a379322022c0961fe0b638cdd842d3c38eeff92c.tar.bz2
linux-stable-a379322022c0961fe0b638cdd842d3c38eeff92c.zip
mm: convert page_table_check_pte_set() to page_table_check_ptes_set()
Tell the page table check how many PTEs & PFNs we want it to check. Link: https://lkml.kernel.org/r/20230802151406.3735276-3-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org> Acked-by: Pasha Tatashin <pasha.tatashin@soleen.com> Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/page_table_check.c')
-rw-r--r--mm/page_table_check.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/mm/page_table_check.c b/mm/page_table_check.c
index 46e77c12c81e..af69c3c8f7c2 100644
--- a/mm/page_table_check.c
+++ b/mm/page_table_check.c
@@ -182,18 +182,20 @@ void __page_table_check_pud_clear(struct mm_struct *mm, pud_t pud)
}
EXPORT_SYMBOL(__page_table_check_pud_clear);
-void __page_table_check_pte_set(struct mm_struct *mm, pte_t *ptep, pte_t pte)
+void __page_table_check_ptes_set(struct mm_struct *mm, pte_t *ptep, pte_t pte,
+ unsigned int nr)
{
+ unsigned int i;
+
if (&init_mm == mm)
return;
- __page_table_check_pte_clear(mm, ptep_get(ptep));
- if (pte_user_accessible_page(pte)) {
- page_table_check_set(pte_pfn(pte), PAGE_SIZE >> PAGE_SHIFT,
- pte_write(pte));
- }
+ for (i = 0; i < nr; i++)
+ __page_table_check_pte_clear(mm, ptep_get(ptep + i));
+ if (pte_user_accessible_page(pte))
+ page_table_check_set(pte_pfn(pte), nr, pte_write(pte));
}
-EXPORT_SYMBOL(__page_table_check_pte_set);
+EXPORT_SYMBOL(__page_table_check_ptes_set);
void __page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, pmd_t pmd)
{