The patch titled Subject: arm64: add support for sub-page faults user probing has been removed from the -mm tree. Its filename was arm64-add-support-for-sub-page-faults-user-probing.patch This patch was dropped because an updated version will be merged ------------------------------------------------------ From: Catalin Marinas <catalin.marinas@xxxxxxx> Subject: arm64: add support for sub-page faults user probing With MTE, even if the pte allows an access, a mismatched tag somewhere within a page can still cause a fault. Select ARCH_HAS_SUBPAGE_FAULTS if MTE is enabled and implement probe_user_writeable(). Link: https://lkml.kernel.org/r/20211124192024.2408218-3-catalin.marinas@xxxxxxx Fixes: a48b73eca4ce ("btrfs: fix potential deadlock in the search ioctl") Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx> Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx> Cc: Andreas Gruenbacher <agruenba@xxxxxxxxxx> Cc: David Sterba <dsterba@xxxxxxxx> Cc: Josef Bacik <josef@xxxxxxxxxxxxxx> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> Cc: Will Deacon <will@xxxxxxxxxx> Cc: <stable@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/arm64/Kconfig | 1 arch/arm64/include/asm/uaccess.h | 33 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) --- a/arch/arm64/include/asm/uaccess.h~arm64-add-support-for-sub-page-faults-user-probing +++ a/arch/arm64/include/asm/uaccess.h @@ -479,4 +479,37 @@ static inline int __copy_from_user_flush } #endif +#ifdef CONFIG_ARCH_HAS_SUBPAGE_FAULTS +static inline size_t __mte_probe_user_range(const char __user *uaddr, + size_t size) +{ + const char __user *end = uaddr + size; + int err = 0; + char val; + + uaddr = PTR_ALIGN_DOWN(uaddr, MTE_GRANULE_SIZE); + while (uaddr < end) { + /* + * A read is sufficient for MTE, the caller should have probed + * for the pte write permission. + */ + __raw_get_user(val, uaddr, err); + if (err) + return end - uaddr; + uaddr += MTE_GRANULE_SIZE; + } + (void)val; + + return 0; +} + +static inline size_t probe_user_writable(const void __user *uaddr, + size_t size) +{ + if (!system_supports_mte()) + return 0; + return __mte_probe_user_range(uaddr, size); +} +#endif /* CONFIG_ARCH_HAS_SUBPAGE_FAULTS */ + #endif /* __ASM_UACCESS_H */ --- a/arch/arm64/Kconfig~arm64-add-support-for-sub-page-faults-user-probing +++ a/arch/arm64/Kconfig @@ -1777,6 +1777,7 @@ config ARM64_MTE depends on AS_HAS_LSE_ATOMICS # Required for tag checking in the uaccess routines depends on ARM64_PAN + select ARCH_HAS_SUBPAGE_FAULTS select ARCH_USES_HIGH_VMA_FLAGS help Memory Tagging (part of the ARMv8.5 Extensions) provides _ Patches currently in -mm which might be from catalin.marinas@xxxxxxx are btrfs-avoid-live-lock-in-search_ioctl-on-hardware-with-sub-page-faults.patch