From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dan Williams Subject: Re: [PATCH v5 3/5] mm: introduce mmap3 for safely defining new mmap flags Date: Wed, 16 Aug 2017 09:52:16 -0700 Message-ID: References: <150286944610.8837.9513410258028246174.stgit@dwillia2-desk3.amr.corp.intel.com> <150286946261.8837.1454297295346610351.stgit@dwillia2-desk3.amr.corp.intel.com> <20170816111541.6c4ulnipt5cxgfsb@node.shutemov.name> <20170816164717.xjbtbdjtwnhvzukg@node.shutemov.name> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20170816164717.xjbtbdjtwnhvzukg-sVvlyX1904swdBt8bTSxpkEMvNT87kid@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-nvdimm-bounces-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org Sender: "Linux-nvdimm" To: "Kirill A. Shutemov" Cc: Jan Kara , Arnd Bergmann , "linux-nvdimm-hn68Rpc1hR1g9hUCZPvPmw@public.gmane.org" , Linux API , "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , linux-xfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Linux MM , Andy Lutomirski , linux-fsdevel , Andrew Morton List-Id: linux-api@vger.kernel.org On Wed, Aug 16, 2017 at 9:47 AM, Kirill A. Shutemov wrote: > On Wed, Aug 16, 2017 at 09:35:11AM -0700, Dan Williams wrote: >> On Wed, Aug 16, 2017 at 4:15 AM, Kirill A. Shutemov >> wrote: >> > On Wed, Aug 16, 2017 at 12:44:22AM -0700, Dan Williams wrote: >> >> diff --git a/include/linux/mman.h b/include/linux/mman.h >> >> index c8367041fafd..0e1de42c836f 100644 >> >> --- a/include/linux/mman.h >> >> +++ b/include/linux/mman.h >> >> @@ -7,6 +7,40 @@ >> >> #include >> >> #include >> >> >> >> +#ifndef MAP_32BIT >> >> +#define MAP_32BIT 0 >> >> +#endif >> >> +#ifndef MAP_HUGE_2MB >> >> +#define MAP_HUGE_2MB 0 >> >> +#endif >> >> +#ifndef MAP_HUGE_1GB >> >> +#define MAP_HUGE_1GB 0 >> >> +#endif >> >> + >> >> +/* >> >> + * The historical set of flags that all mmap implementations implicitly >> >> + * support when file_operations.mmap_supported_mask is zero. >> >> + */ >> >> +#define LEGACY_MAP_SUPPORTED_MASK (MAP_SHARED \ >> >> + | MAP_PRIVATE \ >> >> + | MAP_FIXED \ >> >> + | MAP_ANONYMOUS \ >> >> + | MAP_UNINITIALIZED \ >> >> + | MAP_GROWSDOWN \ >> >> + | MAP_DENYWRITE \ >> >> + | MAP_EXECUTABLE \ >> >> + | MAP_LOCKED \ >> >> + | MAP_NORESERVE \ >> >> + | MAP_POPULATE \ >> >> + | MAP_NONBLOCK \ >> >> + | MAP_STACK \ >> >> + | MAP_HUGETLB \ >> >> + | MAP_32BIT \ >> >> + | MAP_HUGE_2MB \ >> >> + | MAP_HUGE_1GB) >> >> + >> >> +#define MAP_SUPPORTED_MASK (LEGACY_MAP_SUPPORTED_MASK) >> >> + >> >> extern int sysctl_overcommit_memory; >> >> extern int sysctl_overcommit_ratio; >> >> extern unsigned long sysctl_overcommit_kbytes; >> > >> > Since we looking into mmap(2) ABI, maybe we should consider re-defining >> > MAP_DENYWRITE and MAP_EXECUTABLE as 0 in hope that we would be able to >> > re-use these bits in the future? These flags are ignored now anyway. >> >> Yes, we can make these -EOPNOTSUPP in the new syscall. > > You cannot detect them, if we would redefine them as 0. :) Yes, we can, there will now be missing bits in LEGACY_MAP_SUPPORTED_MASK that will fail those bit values until we re-define them. Everything else is a an exercise for libc about what it wants to do when it sees those values.