2017-04-03 04:58:01 +08:00
|
|
|
=====================================
|
|
|
|
The Linux kernel user-space API guide
|
|
|
|
=====================================
|
|
|
|
|
|
|
|
.. _man-pages: https://www.kernel.org/doc/man-pages/
|
|
|
|
|
|
|
|
While much of the kernel's user-space API is documented elsewhere
|
|
|
|
(particularly in the man-pages_ project), some user-space information can
|
|
|
|
also be found in the kernel tree itself. This manual is intended to be the
|
|
|
|
place where this information is gathered.
|
|
|
|
|
2024-01-23 06:18:30 +08:00
|
|
|
|
|
|
|
System calls
|
|
|
|
============
|
|
|
|
|
2017-04-03 04:58:01 +08:00
|
|
|
.. toctree::
|
2024-01-23 06:18:30 +08:00
|
|
|
:maxdepth: 1
|
|
|
|
|
|
|
|
unshare
|
|
|
|
futex2
|
|
|
|
ebpf/index
|
|
|
|
ioctl/index
|
2024-04-16 00:35:23 +08:00
|
|
|
mseal
|
2024-01-23 06:18:30 +08:00
|
|
|
|
|
|
|
Security-related interfaces
|
|
|
|
===========================
|
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 1
|
2017-04-03 04:58:01 +08:00
|
|
|
|
2017-05-13 19:51:38 +08:00
|
|
|
no_new_privs
|
2017-05-13 19:51:37 +08:00
|
|
|
seccomp_filter
|
2021-04-22 23:41:22 +08:00
|
|
|
landlock
|
2024-01-23 06:18:30 +08:00
|
|
|
lsm
|
mm/memfd: add documentation for MFD_NOEXEC_SEAL MFD_EXEC
When MFD_NOEXEC_SEAL was introduced, there was one big mistake: it didn't
have proper documentation. This led to a lot of confusion, especially
about whether or not memfd created with the MFD_NOEXEC_SEAL flag is
sealable. Before MFD_NOEXEC_SEAL, memfd had to explicitly set
MFD_ALLOW_SEALING to be sealable, so it's a fair question.
As one might have noticed, unlike other flags in memfd_create,
MFD_NOEXEC_SEAL is actually a combination of multiple flags. The idea is
to make it easier to use memfd in the most common way, which is NOEXEC +
F_SEAL_EXEC + MFD_ALLOW_SEALING. This works with sysctl vm.noexec to help
existing applications move to a more secure way of using memfd.
Proposals have been made to put MFD_NOEXEC_SEAL non-sealable, unless
MFD_ALLOW_SEALING is set, to be consistent with other flags [1], Those
are based on the viewpoint that each flag is an atomic unit, which is a
reasonable assumption. However, MFD_NOEXEC_SEAL was designed with the
intent of promoting the most secure method of using memfd, therefore a
combination of multiple functionalities into one bit.
Furthermore, the MFD_NOEXEC_SEAL has been added for more than one year,
and multiple applications and distributions have backported and utilized
it. Altering ABI now presents a degree of risk and may lead to
disruption.
MFD_NOEXEC_SEAL is a new flag, and applications must change their code to
use it. There is no backward compatibility problem.
When sysctl vm.noexec == 1 or 2, applications that don't set
MFD_NOEXEC_SEAL or MFD_EXEC will get MFD_NOEXEC_SEAL memfd. And
old-application might break, that is by-design, in such a system vm.noexec
= 0 shall be used. Also no backward compatibility problem.
I propose to include this documentation patch to assist in clarifying the
semantics of MFD_NOEXEC_SEAL, thereby preventing any potential future
confusion.
Finally, I would like to express my gratitude to David Rheinsberg and
Barnabás Pőcze for initiating the discussion on the topic of sealability.
[1]
https://lore.kernel.org/lkml/20230714114753.170814-1-david@readahead.eu/
[jeffxu@chromium.org: updates per Randy]
Link: https://lkml.kernel.org/r/20240611034903.3456796-2-jeffxu@chromium.org
[jeffxu@chromium.org: v3]
Link: https://lkml.kernel.org/r/20240611231409.3899809-2-jeffxu@chromium.org
Link: https://lkml.kernel.org/r/20240607203543.2151433-2-jeffxu@google.com
Signed-off-by: Jeff Xu <jeffxu@chromium.org>
Reviewed-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Aleksa Sarai <cyphar@cyphar.com>
Cc: Barnabás Pőcze <pobrn@protonmail.com>
Cc: Daniel Verkamp <dverkamp@chromium.org>
Cc: David Rheinsberg <david@readahead.eu>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Jorge Lucangeli Obes <jorgelo@chromium.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Shuah Khan <skhan@linuxfoundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2024-06-08 04:35:41 +08:00
|
|
|
mfd_noexec
|
2018-04-29 21:20:11 +08:00
|
|
|
spec_ctrl
|
2024-01-23 06:18:30 +08:00
|
|
|
tee
|
|
|
|
|
|
|
|
Devices and I/O
|
|
|
|
===============
|
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 1
|
|
|
|
|
2019-06-18 22:39:21 +08:00
|
|
|
accelerators/ocxl
|
2023-08-03 23:47:29 +08:00
|
|
|
dma-buf-alloc-exchange
|
2024-01-15 08:48:39 +08:00
|
|
|
gpio/index
|
2022-11-30 04:29:28 +08:00
|
|
|
iommufd
|
2020-03-10 20:57:48 +08:00
|
|
|
media/index
|
2024-01-23 06:18:30 +08:00
|
|
|
dcdbas
|
2021-08-31 18:36:34 +08:00
|
|
|
vduse
|
2023-12-21 20:48:15 +08:00
|
|
|
isapnp
|
2024-01-23 06:18:30 +08:00
|
|
|
|
|
|
|
Everything else
|
|
|
|
===============
|
|
|
|
|
|
|
|
.. toctree::
|
|
|
|
:maxdepth: 1
|
|
|
|
|
|
|
|
ELF
|
|
|
|
netlink/index
|
|
|
|
sysfs-platform_profile
|
2024-01-02 16:50:01 +08:00
|
|
|
vduse
|
|
|
|
futex2
|
|
|
|
perf_ring_buffer
|
2017-04-03 05:18:32 +08:00
|
|
|
|
2017-04-03 04:58:01 +08:00
|
|
|
.. only:: subproject and html
|
|
|
|
|
|
|
|
Indices
|
|
|
|
=======
|
|
|
|
|
|
|
|
* :ref:`genindex`
|