Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/book3e: redefine pte_mkprivileged() and pte_mkuser()

Book3e defines both _PAGE_USER and _PAGE_PRIVILEGED, so the nohash
default pte_mkprivileged() and pte_mkuser() are not usable.

This patch redefines them for book3e.

In theorie, only pte_mkprivileged() needs to be redefined because
_PAGE_USER includes _PAGE_PRIVILEGED, but it is less confusing
to redefine both.

Fixes: a0da4bc166f2 ("powerpc/mm: Allow platforms to redefine some helpers")
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

authored by

Christophe Leroy and committed by
Michael Ellerman
bde1a133 b9fb4480

+16
+16
arch/powerpc/include/asm/nohash/pte-book3e.h
··· 104 104 #define PAGE_READONLY __pgprot(_PAGE_BASE | _PAGE_USER) 105 105 #define PAGE_READONLY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_EXEC) 106 106 107 + #ifndef __ASSEMBLY__ 108 + static inline pte_t pte_mkprivileged(pte_t pte) 109 + { 110 + return __pte((pte_val(pte) & ~_PAGE_USER) | _PAGE_PRIVILEGED); 111 + } 112 + 113 + #define pte_mkprivileged pte_mkprivileged 114 + 115 + static inline pte_t pte_mkuser(pte_t pte) 116 + { 117 + return __pte((pte_val(pte) & ~_PAGE_PRIVILEGED) | _PAGE_USER); 118 + } 119 + 120 + #define pte_mkuser pte_mkuser 121 + #endif /* __ASSEMBLY__ */ 122 + 107 123 #endif /* __KERNEL__ */ 108 124 #endif /* _ASM_POWERPC_NOHASH_PTE_BOOK3E_H */