diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-12-09 16:16:21 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-12-09 21:07:46 +0100 |
commit | 5e3effb1f3327d531c8b9f45153ccec4313e4f6f (patch) | |
tree | b032acfd643cccd5fec6389a7fc9fd8bf9062833 /src | |
parent | 1c36b8bf530e80d848b2e67acd99588ecfb1e440 (diff) | |
download | systemd-5e3effb1f3327d531c8b9f45153ccec4313e4f6f.tar.gz |
virt: drop /proc/1/sched hack
On really old kernels (< 4.14+) a bug in /proc/1/sched handling in the
kernel could be used to determine whether we are running in a PID
namespace. This hasn't worked for a long time, and there's little point
in making things work on old kernels we can't make work on current
kernels, hence let's drop that old cruft.
See: #8153
Diffstat (limited to 'src')
-rw-r--r-- | src/basic/virt.c | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/src/basic/virt.c b/src/basic/virt.c index 7d78a402b3..33d7106c0e 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -517,7 +517,7 @@ int detect_container(void) { */ e = getenv("container"); if (!e) - goto check_sched; + goto none; if (isempty(e)) { r = VIRTUALIZATION_NONE; goto finish; @@ -545,24 +545,7 @@ int detect_container(void) { if (r < 0) /* This only works if we have CAP_SYS_PTRACE, hence let's better ignore failures here */ log_debug_errno(r, "Failed to read $container of PID 1, ignoring: %m"); - /* Interestingly /proc/1/sched actually shows the host's PID for what we see as PID 1. If the PID - * shown there is not 1, we know we are in a PID namespace and hence a container. */ - check_sched: - r = read_one_line_file("/proc/1/sched", &m); - if (r >= 0) { - const char *t; - - t = strrchr(m, '('); - if (!t) - return -EIO; - - if (!startswith(t, "(1,")) { - r = VIRTUALIZATION_CONTAINER_OTHER; - goto finish; - } - } else if (r != -ENOENT) - return r; - +none: /* If that didn't work, give up, assume no container manager. */ r = VIRTUALIZATION_NONE; goto finish; |