Re: [PATCH] mm: redefine the MAP_SHARED_VALIDATE to other value

Michal Hocko
2019-07-08T09:21:03Z

[Cc Dan]

On Mon 08-07-19 16:05:41, zhong jiang wrote:
> As the mman manual says, mmap should return fails when we assign
> the flags to MAP_SHARED | MAP_PRIVATE.
>
> But In fact, We run the code successfully and unexpected.

What is the code that you are running and what is the code version.

> It is because MAP_SHARED_VALIDATE is introduced and equal to
> MAP_SHARED | MAP_PRIVATE.

This was a deliberate decision IIRC. Have a look at 1c9725974074 ("mm:
introduce MAP_SHARED_VALIDATE, a mechanism to safely define new mmap
flags").

> Signed-off-by: zhong jiang <zhongjiang@huawei.com>
> ---
> include/uapi/linux/mman.h | 2 +-
> tools/include/uapi/asm-generic/mman-common-tools.h | 2 +-
> tools/include/uapi/linux/mman.h | 2 +-
> 3 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/include/uapi/linux/mman.h b/include/uapi/linux/mman.h
> index fc1a64c..1d3098e 100644
> --- a/include/uapi/linux/mman.h
> +++ b/include/uapi/linux/mman.h
> @@ -14,7 +14,7 @@
>
> #define MAP_SHARED 0x01 /* Share changes */
> #define MAP_PRIVATE 0x02 /* Changes are private */
> -#define MAP_SHARED_VALIDATE 0x03 /* share + validate extension flags */
> +#define MAP_SHARED_VALIDATE 0x04 /* share + validate extension flags */
>
> /*
> * Huge page size encoding when MAP_HUGETLB is specified, and a huge page
> diff --git a/tools/include/uapi/asm-generic/mman-common-tools.h b/tools/include/uapi/asm-generic/mman-common-tools.h
> index af7d0d3..4fc44d2 100644
> --- a/tools/include/uapi/asm-generic/mman-common-tools.h
> +++ b/tools/include/uapi/asm-generic/mman-common-tools.h
> @@ -18,6 +18,6 @@
> #ifndef MAP_SHARED
> #define MAP_SHARED 0x01 /* Share changes */
> #define MAP_PRIVATE 0x02 /* Changes are private */
> -#define MAP_SHARED_VALIDATE 0x03 /* share + validate extension flags */
> +#define MAP_SHARED_VALIDATE 0x04 /* share + validate extension flags */
> #endif
> #endif // __ASM_GENERIC_MMAN_COMMON_TOOLS_ONLY_H
> diff --git a/tools/include/uapi/linux/mman.h b/tools/include/uapi/linux/mman.h
> index fc1a64c..1d3098e 100644
> --- a/tools/include/uapi/linux/mman.h
> +++ b/tools/include/uapi/linux/mman.h
> @@ -14,7 +14,7 @@
>
> #define MAP_SHARED 0x01 /* Share changes */
> #define MAP_PRIVATE 0x02 /* Changes are private */
> -#define MAP_SHARED_VALIDATE 0x03 /* share + validate extension flags */
> +#define MAP_SHARED_VALIDATE 0x04 /* share + validate extension flags */
>
> /*
> * Huge page size encoding when MAP_HUGETLB is specified, and a huge page
> --
> 1.7.12.4

--
Michal Hocko
SUSE Labs