On Wed, Feb 19, 2025 at 07:09:26PM +0100, Greg Kroah-Hartman wrote: > On Wed, Feb 19, 2025 at 05:18:24PM +0000, Catalin Marinas wrote: > > The problem is in the arm64 arch_calc_vm_flag_bits() as it returns > > VM_MTE_ALLOWED for any MAP_ANONYMOUS ignoring MAP_HUGETLB (it's been > > doing this since day 1 of MTE). The implementation does handle the > > hugetlb file mmap() correctly but not the MAP_ANONYMOUS case. > > > > The fix would be something like below: > > > > -----------------8<-------------------------- > > diff --git a/arch/arm64/include/asm/mman.h b/arch/arm64/include/asm/mman.h > > index 5966ee4a6154..8ff5d88c9f12 100644 > > --- a/arch/arm64/include/asm/mman.h > > +++ b/arch/arm64/include/asm/mman.h > > @@ -28,7 +28,8 @@ static inline unsigned long arch_calc_vm_flag_bits(unsigned long flags) > > * backed by tags-capable memory. The vm_flags may be overridden by a > > * filesystem supporting MTE (RAM-based). > > */ > > - if (system_supports_mte() && (flags & MAP_ANONYMOUS)) > > + if (system_supports_mte() && > > + ((flags & MAP_ANONYMOUS) && !(flags & MAP_HUGETLB))) > > return VM_MTE_ALLOWED; > > > > return 0; > > -------------------8<----------------------- > > > > This fix won't make sense for mainline since it supports MAP_HUGETLB > > already. > > > > Greg, are you ok with a stable-only fix as above or you'd rather see the > > full 25c17c4b55de ("hugetlb: arm64: add mte support") backported? > > A stable-only fix for this is fine, thanks! Can you send it with a > changelog and I'll queue it up. Does it also need to go to older > kernels as well? 5.10, that's when we got MTE support in. There may be some slight variations depending on how far 5baf8b037deb ("mm: refactor arch_calc_vm_flag_bits() and arm64 MTE handling") got backported. This goes together with deb0f6562884 ("mm/mmap: undo ->mmap() when arch_validate_flags() fails"), so they may actually go all the way to 5.10. I'll prepare the patches tomorrow, give them a try and send to stable. Thanks. -- Catalin