Commit 7bbf7013 authored by Vasily Gorbik's avatar Vasily Gorbik
Browse files

Merge branch 'page-table-check-support' of...

Merge branch 'page-table-check-support' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux into features

Add s390 support for CONFIG_PAGE_TABLE_CHECK.

* 'page-table-check-support' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux

:
  s390: Enable page table check for debug_defconfig
  s390/pgtable: Add s390 support for page table check
  s390/pgtable: Use set_pmd_bit() to invalidate PMD entry
  mm/page_table_check: Pass mm_struct to pxx_user_accessible_page()

Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parents 92ae0c1e 07c4e7a6
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -1263,17 +1263,17 @@ static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
#endif

#ifdef CONFIG_PAGE_TABLE_CHECK
static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr)
static inline bool pte_user_accessible_page(struct mm_struct *mm, unsigned long addr, pte_t pte)
{
	return pte_valid(pte) && (pte_user(pte) || pte_user_exec(pte));
}

static inline bool pmd_user_accessible_page(pmd_t pmd, unsigned long addr)
static inline bool pmd_user_accessible_page(struct mm_struct *mm, unsigned long addr, pmd_t pmd)
{
	return pmd_valid(pmd) && !pmd_table(pmd) && (pmd_user(pmd) || pmd_user_exec(pmd));
}

static inline bool pud_user_accessible_page(pud_t pud, unsigned long addr)
static inline bool pud_user_accessible_page(struct mm_struct *mm, unsigned long addr, pud_t pud)
{
	return pud_valid(pud) && !pud_table(pud) && (pud_user(pud) || pud_user_exec(pud));
}
+1 −1
Original line number Diff line number Diff line
@@ -438,7 +438,7 @@ static inline bool pte_access_permitted(pte_t pte, bool write)
	return true;
}

static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr)
static inline bool pte_user_accessible_page(struct mm_struct *mm, unsigned long addr, pte_t pte)
{
	return pte_present(pte) && !is_kernel_addr(addr);
}
+5 −5
Original line number Diff line number Diff line
@@ -549,7 +549,7 @@ static inline bool pte_access_permitted(pte_t pte, bool write)
	return arch_pte_access_permitted(pte_val(pte), write, 0);
}

static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr)
static inline bool pte_user_accessible_page(struct mm_struct *mm, unsigned long addr, pte_t pte)
{
	return pte_present(pte) && pte_user(pte);
}
@@ -925,9 +925,9 @@ static inline bool pud_access_permitted(pud_t pud, bool write)
}

#define pud_user_accessible_page pud_user_accessible_page
static inline bool pud_user_accessible_page(pud_t pud, unsigned long addr)
static inline bool pud_user_accessible_page(struct mm_struct *mm, unsigned long addr, pud_t pud)
{
	return pud_leaf(pud) && pte_user_accessible_page(pud_pte(pud), addr);
	return pud_leaf(pud) && pte_user_accessible_page(mm, addr, pud_pte(pud));
}

#define __p4d_raw(x)	((p4d_t) { __pgd_raw(x) })
@@ -1096,9 +1096,9 @@ static inline bool pmd_access_permitted(pmd_t pmd, bool write)
}

#define pmd_user_accessible_page pmd_user_accessible_page
static inline bool pmd_user_accessible_page(pmd_t pmd, unsigned long addr)
static inline bool pmd_user_accessible_page(struct mm_struct *mm, unsigned long addr, pmd_t pmd)
{
	return pmd_leaf(pmd) && pte_user_accessible_page(pmd_pte(pmd), addr);
	return pmd_leaf(pmd) && pte_user_accessible_page(mm, addr, pmd_pte(pmd));
}

#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+1 −1
Original line number Diff line number Diff line
@@ -249,7 +249,7 @@ static inline bool pte_access_permitted(pte_t pte, bool write)
	return true;
}

static inline bool pte_user_accessible_page(pte_t pte, unsigned long addr)
static inline bool pte_user_accessible_page(struct mm_struct *mm, unsigned long addr, pte_t pte)
{
	return pte_present(pte) && !is_kernel_addr(addr);
}
+2 −2
Original line number Diff line number Diff line
@@ -205,11 +205,11 @@ static inline bool arch_supports_memmap_on_memory(unsigned long vmemmap_size)
#endif /* CONFIG_PPC64 */

#ifndef pmd_user_accessible_page
#define pmd_user_accessible_page(pmd, addr)	false
#define pmd_user_accessible_page(mm, addr, pmd)	false
#endif

#ifndef pud_user_accessible_page
#define pud_user_accessible_page(pud, addr)	false
#define pud_user_accessible_page(mm, addr, pud)	false
#endif

#endif /* __ASSEMBLER__ */
Loading