Commit a3793220 authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Andrew Morton
Browse files

mm: convert page_table_check_pte_set() to page_table_check_ptes_set()

parent f9bff0e3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -348,7 +348,7 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,
static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
			      pte_t *ptep, pte_t pte)
{
	page_table_check_pte_set(mm, ptep, pte);
	page_table_check_ptes_set(mm, ptep, pte, 1);
	return __set_pte_at(mm, addr, ptep, pte);
}

+1 −1
Original line number Diff line number Diff line
@@ -499,7 +499,7 @@ static inline void __set_pte_at(struct mm_struct *mm,
static inline void set_pte_at(struct mm_struct *mm,
	unsigned long addr, pte_t *ptep, pte_t pteval)
{
	page_table_check_pte_set(mm, ptep, pteval);
	page_table_check_ptes_set(mm, ptep, pteval, 1);
	__set_pte_at(mm, addr, ptep, pteval);
}

+1 −1
Original line number Diff line number Diff line
@@ -1023,7 +1023,7 @@ static inline pud_t native_local_pudp_get_and_clear(pud_t *pudp)
static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
			      pte_t *ptep, pte_t pte)
{
	page_table_check_pte_set(mm, ptep, pte);
	page_table_check_ptes_set(mm, ptep, pte, 1);
	set_pte(ptep, pte);
}

+7 −6
Original line number Diff line number Diff line
@@ -17,7 +17,8 @@ void __page_table_check_zero(struct page *page, unsigned int order);
void __page_table_check_pte_clear(struct mm_struct *mm, pte_t pte);
void __page_table_check_pmd_clear(struct mm_struct *mm, pmd_t pmd);
void __page_table_check_pud_clear(struct mm_struct *mm, pud_t pud);
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);
void __page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp, pmd_t pmd);
void __page_table_check_pud_set(struct mm_struct *mm, pud_t *pudp, pud_t pud);
void __page_table_check_pte_clear_range(struct mm_struct *mm,
@@ -64,13 +65,13 @@ static inline void page_table_check_pud_clear(struct mm_struct *mm, pud_t pud)
	__page_table_check_pud_clear(mm, pud);
}

static inline void page_table_check_pte_set(struct mm_struct *mm, pte_t *ptep,
					    pte_t pte)
static inline void page_table_check_ptes_set(struct mm_struct *mm,
		pte_t *ptep, pte_t pte, unsigned int nr)
{
	if (static_branch_likely(&page_table_check_disabled))
		return;

	__page_table_check_pte_set(mm, ptep, pte);
	__page_table_check_ptes_set(mm, ptep, pte, nr);
}

static inline void page_table_check_pmd_set(struct mm_struct *mm, pmd_t *pmdp,
@@ -123,8 +124,8 @@ static inline void page_table_check_pud_clear(struct mm_struct *mm, pud_t pud)
{
}

static inline void page_table_check_pte_set(struct mm_struct *mm, pte_t *ptep,
					    pte_t pte)
static inline void page_table_check_ptes_set(struct mm_struct *mm,
		pte_t *ptep, pte_t pte, unsigned int nr)
{
}

+9 −7
Original line number Diff line number Diff line
@@ -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)
{