mmap: Remember the MAP_FIXED flag as VM_FIXED
authorBen Hutchings <ben@decadent.org.uk>
Wed, 5 Jul 2017 12:32:43 +0000 (13:32 +0100)
committerSalvatore Bonaccorso <carnil@debian.org>
Tue, 20 Mar 2018 08:31:07 +0000 (08:31 +0000)
Since 4.15 there are no spare bits, but we can use VM_ARCH_1 as
VM_FIXED wil only be needed on x86.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Gbp-Pq: Topic bugfix/x86
Gbp-Pq: Name mmap-remember-the-map_fixed-flag-as-vm_fixed.patch

include/linux/mm.h
include/linux/mman.h

index fbd47990e712217caf94b250e224ab6149a780fa..432deb97aea0073b26f1b360bde115ad79b829d4 100644 (file)
@@ -201,6 +201,11 @@ extern unsigned int kobjsize(const void *objp);
 #define VM_HUGETLB     0x00400000      /* Huge TLB Page VM */
 #define VM_SYNC                0x00800000      /* Synchronous page faults */
 #define VM_ARCH_1      0x01000000      /* Architecture-specific flag */
+#ifdef CONFIG_X86
+#define VM_FIXED       VM_ARCH_1       /* Allocated at fixed address */
+#else
+#define VM_FIXED       0
+#endif
 #define VM_WIPEONFORK  0x02000000      /* Wipe VMA contents in child. */
 #define VM_DONTDUMP    0x04000000      /* Do not include in the core dump */
 
index 6a4d1caaff5c229903f905c04a41dc633b7ac009..393970e55bb28cc722fea6e0aaf4bf142dfa8628 100644 (file)
@@ -131,7 +131,9 @@ calc_vm_flag_bits(unsigned long flags)
        return _calc_vm_trans(flags, MAP_GROWSDOWN,  VM_GROWSDOWN ) |
               _calc_vm_trans(flags, MAP_DENYWRITE,  VM_DENYWRITE ) |
               _calc_vm_trans(flags, MAP_LOCKED,     VM_LOCKED    ) |
-              _calc_vm_trans(flags, MAP_SYNC,       VM_SYNC      );
+              _calc_vm_trans(flags, MAP_SYNC,       VM_SYNC      ) |
+              (VM_FIXED ?
+               _calc_vm_trans(flags, MAP_FIXED,     VM_FIXED     ) : 0);
 }
 
 unsigned long vm_commit_limit(void);