]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
x86: Remove custom definition of mk_pte()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Fri, 31 Jan 2025 11:14:13 +0000 (06:14 -0500)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 25 Feb 2025 19:47:20 +0000 (14:47 -0500)
Move the shadow stack check to pfn_pte() which lets us use the common
definition of mk_pte().

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
arch/x86/include/asm/pgtable.h

index 593f10aabd45a653d276560547e7b19a660a21ff..9f480bdafd20a67a321f0caf04c7200409064988 100644 (file)
@@ -784,6 +784,9 @@ static inline pgprotval_t check_pgprot(pgprot_t pgprot)
 static inline pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
 {
        phys_addr_t pfn = (phys_addr_t)page_nr << PAGE_SHIFT;
+       /* This bit combination is used to mark shadow stacks */
+       WARN_ON_ONCE((pgprot_val(pgprot) & (_PAGE_DIRTY | _PAGE_RW)) ==
+                       _PAGE_DIRTY);
        pfn ^= protnone_mask(pgprot_val(pgprot));
        pfn &= PTE_PFN_MASK;
        return __pte(pfn | check_pgprot(pgprot));
@@ -1080,22 +1083,6 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd)
  */
 #define pmd_page(pmd)  pfn_to_page(pmd_pfn(pmd))
 
-/*
- * Conversion functions: convert a page and protection to a page entry,
- * and a page entry and page directory to the page they refer to.
- *
- * (Currently stuck as a macro because of indirect forward reference
- * to linux/mm.h:page_to_nid())
- */
-#define mk_pte(page, pgprot)                                             \
-({                                                                       \
-       pgprot_t __pgprot = pgprot;                                       \
-                                                                         \
-       WARN_ON_ONCE((pgprot_val(__pgprot) & (_PAGE_DIRTY | _PAGE_RW)) == \
-                   _PAGE_DIRTY);                                         \
-       pfn_pte(page_to_pfn(page), __pgprot);                             \
-})
-
 static inline int pmd_bad(pmd_t pmd)
 {
        return (pmd_flags(pmd) & ~(_PAGE_USER | _PAGE_ACCESSED)) !=