summaryrefslogtreecommitdiffstats
path: root/src/basic/missing_prctl.h
diff options
context:
space:
mode:
authorTopi Miettinen <toiwoton@gmail.com>2022-11-06 20:12:45 +0100
committerTopi Miettinen <topimiettinen@users.noreply.github.com>2023-03-13 19:44:36 +0100
commit7a114ed4b39e9670f6a511f3eecb6fd58274d27b (patch)
tree72914d8845216087ad2983e13ce036c0518ba205 /src/basic/missing_prctl.h
parentMerge pull request #26749 from DaanDeMeyer/more-cleanups (diff)
downloadsystemd-7a114ed4b39e9670f6a511f3eecb6fd58274d27b.tar.xz
systemd-7a114ed4b39e9670f6a511f3eecb6fd58274d27b.zip
execute: use prctl(PR_SET_MDWE) for MemoryDenyWriteExecute=yes
On some ARM platforms, the dynamic linker could use PROT_BTI memory protection flag with `mprotect(..., PROT_BTI | PROT_EXEC)` to enable additional memory protection for executable pages. But `MemoryDenyWriteExecute=yes` blocks this with seccomp filter denying all `mprotect(..., x | PROT_EXEC)`. Newly preferred method is to use prctl(PR_SET_MDWE) on supported kernels. Then in-kernel implementation can allow PROT_BTI as necessary, without weakening MDWE. In-kernel version may also be extended to more sophisticated protections in the future.
Diffstat (limited to 'src/basic/missing_prctl.h')
-rw-r--r--src/basic/missing_prctl.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/basic/missing_prctl.h b/src/basic/missing_prctl.h
index ab851306ba..016085bb02 100644
--- a/src/basic/missing_prctl.h
+++ b/src/basic/missing_prctl.h
@@ -12,3 +12,11 @@
#define PR_CAP_AMBIENT_LOWER 3
#define PR_CAP_AMBIENT_CLEAR_ALL 4
#endif
+
+/* b507808ebce23561d4ff8c2aa1fb949fe402bc61 (6.3) */
+#ifndef PR_SET_MDWE
+#define PR_SET_MDWE 65
+#endif
+#ifndef PR_MDWE_REFUSE_EXEC_GAIN
+#define PR_MDWE_REFUSE_EXEC_GAIN 1
+#endif