mm: Allow arm64 mmap(PROT_MTE) on RAM-based files
authorCatalin Marinas <catalin.marinas@arm.com>
Fri, 29 Nov 2019 12:45:08 +0000 (12:45 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 4 Sep 2020 11:46:07 +0000 (12:46 +0100)
Since arm64 memory (allocation) tags can only be stored in RAM, mapping
files with PROT_MTE is not allowed by default. RAM-based files like
those in a tmpfs mount or memfd_create() can support memory tagging, so
update the vm_flags accordingly in shmem_mmap().

Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
mm/shmem.c

index 271548ca20f3149b90974224fd767cbec5e42cb2..ec94f4c7851e4461fa2c6c1b92f8b24c34ab134a 100644 (file)
@@ -2267,6 +2267,9 @@ static int shmem_mmap(struct file *file, struct vm_area_struct *vma)
                        vma->vm_flags &= ~(VM_MAYWRITE);
        }
 
+       /* arm64 - allow memory tagging on RAM-based files */
+       vma->vm_flags |= VM_MTE_ALLOWED;
+
        file_accessed(file);
        vma->vm_ops = &shmem_vm_ops;
        if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) &&