Files
linux/include/uapi/linux
Jeff Xu 105ff5339f mm/memfd: add MFD_NOEXEC_SEAL and MFD_EXEC
The new MFD_NOEXEC_SEAL and MFD_EXEC flags allows application to set
executable bit at creation time (memfd_create).

When MFD_NOEXEC_SEAL is set, memfd is created without executable bit
(mode:0666), and sealed with F_SEAL_EXEC, so it can't be chmod to be
executable (mode: 0777) after creation.

when MFD_EXEC flag is set, memfd is created with executable bit
(mode:0777), this is the same as the old behavior of memfd_create.

The new pid namespaced sysctl vm.memfd_noexec has 3 values:
0: memfd_create() without MFD_EXEC nor MFD_NOEXEC_SEAL acts like
        MFD_EXEC was set.
1: memfd_create() without MFD_EXEC nor MFD_NOEXEC_SEAL acts like
        MFD_NOEXEC_SEAL was set.
2: memfd_create() without MFD_NOEXEC_SEAL will be rejected.

The sysctl allows finer control of memfd_create for old-software that
doesn't set the executable bit, for example, a container with
vm.memfd_noexec=1 means the old-software will create non-executable memfd
by default.  Also, the value of memfd_noexec is passed to child namespace
at creation time.  For example, if the init namespace has
vm.memfd_noexec=2, all its children namespaces will be created with 2.

[akpm@linux-foundation.org: add stub functions to fix build]
[akpm@linux-foundation.org: remove unneeded register_pid_ns_ctl_table_vm() stub, per Jeff]
[akpm@linux-foundation.org: s/pr_warn_ratelimited/pr_warn_once/, per review]
[akpm@linux-foundation.org: fix CONFIG_SYSCTL=n warning]
Link: https://lkml.kernel.org/r/20221215001205.51969-4-jeffxu@google.com
Signed-off-by: Jeff Xu <jeffxu@google.com>
Co-developed-by: Daniel Verkamp <dverkamp@chromium.org>
Signed-off-by: Daniel Verkamp <dverkamp@chromium.org>
Reported-by: kernel test robot <lkp@intel.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Cc: David Herrmann <dh.herrmann@gmail.com>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Jann Horn <jannh@google.com>
Cc: Jorge Lucangeli Obes <jorgelo@chromium.org>
Cc: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-01-18 17:12:37 -08:00
..
2022-09-15 09:08:09 +02:00
2021-01-25 18:44:44 +01:00
2022-04-19 13:13:47 +01:00
2021-11-01 13:36:08 +00:00
2022-08-11 10:31:19 -07:00
2020-08-12 10:58:00 -07:00
2019-03-07 18:32:01 -08:00
2022-12-08 18:25:31 -08:00
2022-06-07 10:20:42 -07:00
2019-10-09 22:31:14 -04:00
2019-09-25 17:51:39 -07:00
2021-11-26 16:48:59 +01:00
2019-08-02 14:44:02 +10:00
2022-11-03 15:16:50 +01:00
2022-08-23 14:54:54 -05:00
2022-10-25 15:17:23 -07:00
2020-07-19 19:20:22 -07:00
2022-04-04 08:55:23 +02:00
2023-01-18 17:12:37 -08:00
2019-03-27 13:30:07 -07:00
2021-10-07 13:51:11 +02:00
2022-08-10 13:49:50 +01:00
2021-02-08 13:01:24 +01:00
2022-03-11 08:28:05 -08:00
2021-11-15 07:53:10 -08:00
2021-06-03 15:31:34 -07:00
2020-07-13 15:32:56 -07:00
2020-04-20 12:43:24 -07:00
2022-06-03 20:09:27 +08:00
2022-09-20 09:13:38 +02:00
2022-10-19 09:01:44 +02:00
2021-03-10 09:34:06 +01:00
2020-08-18 15:44:44 +02:00
2022-12-01 20:06:06 -08:00
2022-09-07 16:46:03 +02:00
2021-07-06 10:37:46 -05:00
2019-10-02 20:32:27 -06:00
2022-09-20 09:13:38 +02:00
2023-01-04 14:44:13 -07:00
2019-01-22 10:21:45 +01:00
2019-07-30 20:34:34 +02:00
2020-03-29 22:30:57 -07:00
2022-11-17 11:04:23 -08:00
2021-01-07 16:17:32 +01:00
2022-09-27 17:29:09 -07:00
2019-12-09 09:59:07 +01:00
2020-03-29 23:29:08 +02:00
2022-08-11 04:31:15 -04:00
2019-08-01 21:49:46 +02:00
2021-06-12 13:16:45 -07:00
2020-07-13 15:32:56 -07:00
2022-12-05 10:30:47 +01:00