diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2026-09-25 15:55:03 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2026-09-25 15:55:03 -0700 |
| commit | 75467f60a3d14f08f86f2b353298d2826382ff23 (patch) | |
| tree | acd8a7d5b5a675042449386efa5b42ec44d8bf81 /include/asm-generic/pgtable_uffd.h | |
| download | linux-stable-75467f60a3d14f08f86f2b353298d2826382ff23.tar.gz linux-stable-75467f60a3d14f08f86f2b353298d2826382ff23.zip | |
Merge tag 'ipe-pr-20260925' of git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipegrafted
Pull IPE fixes from Fan Wu:
"Two fixes for use-after-free issues found by recent LLM-assisted code
analysis.
- move successful policy load auditing under the new policy
directory's inode lock, preventing a concurrent policy deletion
from freeing the policy while it is still being audited
- protect the dm-verity root hash with RCU, preventing policy
evaluation from racing with root hash replacement during preresume"
* tag 'ipe-pr-20260925' of git://git.kernel.org/pub/scm/linux/kernel/git/wufan/ipe:
ipe: protect the dm-verity root hash with RCU
ipe: fix use-after-free when auditing a newly loaded policy
Diffstat (limited to 'include/asm-generic/pgtable_uffd.h')
| -rw-r--r-- | include/asm-generic/pgtable_uffd.h | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/include/asm-generic/pgtable_uffd.h b/include/asm-generic/pgtable_uffd.h new file mode 100644 index 000000000..30e88fc1d --- /dev/null +++ b/include/asm-generic/pgtable_uffd.h @@ -0,0 +1,83 @@ +#ifndef _ASM_GENERIC_PGTABLE_UFFD_H +#define _ASM_GENERIC_PGTABLE_UFFD_H + +/* + * Some platforms can customize the uffd PTE bit, making it unavailable + * even if the architecture provides the resource. + * Adding this API allows architectures to add their own checks for the + * devices on which the kernel is running. + * Note: When overriding it, please make sure the + * CONFIG_HAVE_ARCH_USERFAULTFD_WP is part of this macro. + */ +#ifndef pgtable_supports_uffd +#define pgtable_supports_uffd() IS_ENABLED(CONFIG_HAVE_ARCH_USERFAULTFD_WP) +#endif + +static inline bool uffd_supports_wp_marker(void) +{ + return pgtable_supports_uffd() && IS_ENABLED(CONFIG_PTE_MARKER_UFFD_WP); +} + +#ifndef CONFIG_HAVE_ARCH_USERFAULTFD_WP +static __always_inline int pte_uffd(pte_t pte) +{ + return 0; +} + +static __always_inline int pmd_uffd(pmd_t pmd) +{ + return 0; +} + +static __always_inline pte_t pte_mkuffd(pte_t pte) +{ + return pte; +} + +static __always_inline pmd_t pmd_mkuffd(pmd_t pmd) +{ + return pmd; +} + +static __always_inline pte_t pte_clear_uffd(pte_t pte) +{ + return pte; +} + +static __always_inline pmd_t pmd_clear_uffd(pmd_t pmd) +{ + return pmd; +} + +static __always_inline pte_t pte_swp_mkuffd(pte_t pte) +{ + return pte; +} + +static __always_inline int pte_swp_uffd(pte_t pte) +{ + return 0; +} + +static __always_inline pte_t pte_swp_clear_uffd(pte_t pte) +{ + return pte; +} + +static inline pmd_t pmd_swp_mkuffd(pmd_t pmd) +{ + return pmd; +} + +static inline int pmd_swp_uffd(pmd_t pmd) +{ + return 0; +} + +static inline pmd_t pmd_swp_clear_uffd(pmd_t pmd) +{ + return pmd; +} +#endif /* CONFIG_HAVE_ARCH_USERFAULTFD_WP */ + +#endif /* _ASM_GENERIC_PGTABLE_UFFD_H */ |
