Re: [RFC PATCH v8 2/2] mm: introduce MAP_SHARED_VALIDATE, a mechanism to safely define new mmap flags
From: Dan Williams <hidden>
Date: 2017-09-11 17:21:40
Also in:
linux-mm, lkml, nvdimm
On Mon, Sep 11, 2017 at 2:47 AM, Jan Kara [off-list ref] wrote:
On Fri 08-09-17 12:35:13, Dan Williams wrote:quoted
The mmap(2) syscall suffers from the ABI anti-pattern of not validating unknown flags. However, proposals like MAP_SYNC and MAP_DIRECT need a mechanism to define new behavior that is known to fail on older kernels without the support. Define a new MAP_SHARED_VALIDATE flag pattern that is guaranteed to fail on all legacy mmap implementations. With this in place new flags can be defined as: #define MAP_new (MAP_SHARED_VALIDATE | val)Is this changelog stale? Given MAP_SHARED_VALIDATE will be new mapping type, I'd expect we define new flags just as any other mapping flags... I see no reason why MAP_SHARED_VALIDATE should be or'ed to that.
True, it will just by a new MAP_TYPE plus new flags. I will fix this up comment. [..]
quoted
diff --git a/arch/alpha/include/uapi/asm/mman.h b/arch/alpha/include/uapi/asm/mman.h index 3b26cc62dadb..c32276c4196a 100644 --- a/arch/alpha/include/uapi/asm/mman.h +++ b/arch/alpha/include/uapi/asm/mman.h@@ -14,6 +14,7 @@ #define MAP_TYPE 0x0f /* Mask for type of mapping (OSF/1 is _wrong_) */ #define MAP_FIXED 0x100 /* Interpret addr exactly */ #define MAP_ANONYMOUS 0x10 /* don't use a file */ +#define MAP_SHARED_VALIDATE (MAP_SHARED|MAP_PRIVATE) /* validate extension flags */And I'd explicitely define MAP_SHARED_VALIDATE as the first unused value among mapping types (which is in fact enum embedded inside mapping flags). I.e. 0x03 on alpha, x86, and probably all other archs - it has nothing to do with MAP_SHARED|MAP_PRIVATE - it is just another type of the mapping which happens to have most of the MAP_SHARED semantics...
Ok, I'll make it 0x3 everywhere.