1
0
mirror of https://github.com/systemd/systemd synced 2026-03-31 20:24:50 +02:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Yu Watanabe
20e458ae3c nspawn: ignore --suppress-sync=yes when seccomp is disabled
Follow-up for 4a4654e0241fbeabecb8587fd3520b6b39264b9c.

Fixes #21090.
2021-10-22 23:43:20 +02:00
Lennart Poettering
dbf1aca619 nspawn: bump RLIMIT_NOFILE for nspawn payload similar to how host PID 1 does it for its payload
We try to pass containers roughly the same rlimits as the host gets from
the kernel. However, this means we'd set the RLIMIT_NOFILE to 4K. Which
is quite limiting though, and is something we actually departed from in
PID1: since 52d620757817bc0fa7de3ddbe43024544ced7ea0 we raise the limit
substantially for all userspace.

Given that nspawn is quite often invoked without proper PID1, let's raise the
limits for container payloads the same way as we do from the real PID1
to its service payloads.
2021-10-22 23:42:55 +02:00

View File

@ -3405,9 +3405,13 @@ static int inner_child(
}
if (arg_suppress_sync) {
#if HAVE_SECCOMP
r = seccomp_suppress_sync();
if (r < 0)
log_debug_errno(r, "Failed to install sync() suppression seccomp filter, ignoring: %m");
#else
log_debug("systemd is built without SECCOMP support. Ignoring --suppress-sync= command line option and SuppressSync= setting.")
#endif
}
#if HAVE_SELINUX
@ -5330,6 +5334,15 @@ static int initialize_rlimits(void) {
if (prlimit(1, rl, NULL, &buffer) < 0)
return log_error_errno(errno, "Failed to read resource limit RLIMIT_%s of PID 1: %m", rlimit_to_string(rl));
v = &buffer;
} else if (rl == RLIMIT_NOFILE) {
/* We nowadays bump RLIMIT_NOFILE's hard limit early in PID 1 for all
* userspace. Given that nspawn containers are often run without our PID 1,
* let's grant the containers a raised RLIMIT_NOFILE hard limit by default,
* so that container userspace gets similar resources as host userspace
* gets. */
buffer = kernel_defaults[rl];
buffer.rlim_max = MIN((rlim_t) read_nr_open(), (rlim_t) HIGH_RLIMIT_NOFILE);
v = &buffer;
} else
v = kernel_defaults + rl;