summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-02-17 15:35:48 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-02-23 15:09:13 +0900
commit24002121289698569bc28c0fe32dbb553a648545 (patch)
treef4ab635048dfc77bdcd928701e3587e75f34d690 /src
parentfaac56d5d2bd078ddff81cd999874477e8e373ce (diff)
downloadsystemd-24002121289698569bc28c0fe32dbb553a648545.tar.gz
core/execute: make PrivateMounts= tristate
No functional change, just preparation for later commits.
Diffstat (limited to 'src')
-rw-r--r--src/core/dbus-execute.c4
-rw-r--r--src/core/execute.c3
-rw-r--r--src/core/execute.h2
-rw-r--r--src/core/load-fragment-gperf.gperf.in2
4 files changed, 6 insertions, 5 deletions
diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
index b07b5775ff..8c3fa7b286 100644
--- a/src/core/dbus-execute.c
+++ b/src/core/dbus-execute.c
@@ -1274,7 +1274,7 @@ const sd_bus_vtable bus_exec_vtable[] = {
SD_BUS_PROPERTY("ProtectControlGroups", "b", bus_property_get_bool, offsetof(ExecContext, protect_control_groups), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PrivateNetwork", "b", bus_property_get_bool, offsetof(ExecContext, private_network), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PrivateUsers", "b", bus_property_get_bool, offsetof(ExecContext, private_users), SD_BUS_VTABLE_PROPERTY_CONST),
- SD_BUS_PROPERTY("PrivateMounts", "b", bus_property_get_bool, offsetof(ExecContext, private_mounts), SD_BUS_VTABLE_PROPERTY_CONST),
+ SD_BUS_PROPERTY("PrivateMounts", "b", bus_property_get_tristate, offsetof(ExecContext, private_mounts), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("PrivateIPC", "b", bus_property_get_bool, offsetof(ExecContext, private_ipc), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("ProtectHome", "s", property_get_protect_home, offsetof(ExecContext, protect_home), SD_BUS_VTABLE_PROPERTY_CONST),
SD_BUS_PROPERTY("ProtectSystem", "s", property_get_protect_system, offsetof(ExecContext, protect_system), SD_BUS_VTABLE_PROPERTY_CONST),
@@ -1933,7 +1933,7 @@ int bus_exec_context_set_transient_property(
return bus_set_transient_bool(u, name, &c->private_devices, message, flags, error);
if (streq(name, "PrivateMounts"))
- return bus_set_transient_bool(u, name, &c->private_mounts, message, flags, error);
+ return bus_set_transient_tristate(u, name, &c->private_mounts, message, flags, error);
if (streq(name, "PrivateNetwork"))
return bus_set_transient_bool(u, name, &c->private_network, message, flags, error);
diff --git a/src/core/execute.c b/src/core/execute.c
index e19f382118..39ece6e735 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -2074,7 +2074,7 @@ bool exec_needs_mount_namespace(
return true;
if (context->private_devices ||
- context->private_mounts ||
+ context->private_mounts > 0 ||
context->protect_system != PROTECT_SYSTEM_NO ||
context->protect_home != PROTECT_HOME_NO ||
context->protect_kernel_tunables ||
@@ -5488,6 +5488,7 @@ void exec_context_init(ExecContext *c) {
c->tty_rows = UINT_MAX;
c->tty_cols = UINT_MAX;
numa_policy_reset(&c->numa_policy);
+ c->private_mounts = -1;
}
void exec_context_done(ExecContext *c) {
diff --git a/src/core/execute.h b/src/core/execute.h
index b115a52a73..79f98daf30 100644
--- a/src/core/execute.h
+++ b/src/core/execute.h
@@ -301,11 +301,11 @@ struct ExecContext {
ProtectProc protect_proc; /* hidepid= */
ProcSubset proc_subset; /* subset= */
+ int private_mounts;
bool private_tmp;
bool private_network;
bool private_devices;
bool private_users;
- bool private_mounts;
bool private_ipc;
bool protect_kernel_tunables;
bool protect_kernel_modules;
diff --git a/src/core/load-fragment-gperf.gperf.in b/src/core/load-fragment-gperf.gperf.in
index 58ace46279..2a8a10819b 100644
--- a/src/core/load-fragment-gperf.gperf.in
+++ b/src/core/load-fragment-gperf.gperf.in
@@ -126,7 +126,7 @@
{{type}}.LogNamespace, config_parse_log_namespace, 0, offsetof({{type}}, exec_context)
{{type}}.PrivateNetwork, config_parse_bool, 0, offsetof({{type}}, exec_context.private_network)
{{type}}.PrivateUsers, config_parse_bool, 0, offsetof({{type}}, exec_context.private_users)
-{{type}}.PrivateMounts, config_parse_bool, 0, offsetof({{type}}, exec_context.private_mounts)
+{{type}}.PrivateMounts, config_parse_tristate, 0, offsetof({{type}}, exec_context.private_mounts)
{{type}}.PrivateIPC, config_parse_bool, 0, offsetof({{type}}, exec_context.private_ipc)
{{type}}.ProtectSystem, config_parse_protect_system, 0, offsetof({{type}}, exec_context.protect_system)
{{type}}.ProtectHome, config_parse_protect_home, 0, offsetof({{type}}, exec_context.protect_home)