mm/mmap: clarify protection_map[] indices
authorAnshuman Khandual <anshuman.khandual@arm.com>
Fri, 29 Apr 2022 06:16:12 +0000 (23:16 -0700)
committerakpm <akpm@linux-foundation.org>
Fri, 29 Apr 2022 06:16:12 +0000 (23:16 -0700)
protection_map[] maps vm_flags access combinations into page protection
value as defined by the platform via __PXXX and __SXXX macros.  The array
indices in protection_map[], represents vm_flags access combinations but
it's not very intuitive to derive.  This makes it clear and explicit.

Link: https://lkml.kernel.org/r/20220404031840.588321-3-anshuman.khandual@arm.com
Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/mmap.c

index 042f01e..7873cc3 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -102,8 +102,22 @@ static void unmap_region(struct mm_struct *mm,
  *                                                             x: (yes) yes
  */
 pgprot_t protection_map[16] __ro_after_init = {
-       __P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,
-       __S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111
+       [VM_NONE]                                       = __P000,
+       [VM_READ]                                       = __P001,
+       [VM_WRITE]                                      = __P010,
+       [VM_WRITE | VM_READ]                            = __P011,
+       [VM_EXEC]                                       = __P100,
+       [VM_EXEC | VM_READ]                             = __P101,
+       [VM_EXEC | VM_WRITE]                            = __P110,
+       [VM_EXEC | VM_WRITE | VM_READ]                  = __P111,
+       [VM_SHARED]                                     = __S000,
+       [VM_SHARED | VM_READ]                           = __S001,
+       [VM_SHARED | VM_WRITE]                          = __S010,
+       [VM_SHARED | VM_WRITE | VM_READ]                = __S011,
+       [VM_SHARED | VM_EXEC]                           = __S100,
+       [VM_SHARED | VM_EXEC | VM_READ]                 = __S101,
+       [VM_SHARED | VM_EXEC | VM_WRITE]                = __S110,
+       [VM_SHARED | VM_EXEC | VM_WRITE | VM_READ]      = __S111
 };
 
 #ifndef CONFIG_ARCH_HAS_FILTER_PGPROT