summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2020-12-09 16:16:21 +0100
committerLennart Poettering <lennart@poettering.net>2020-12-09 21:07:46 +0100
commit5e3effb1f3327d531c8b9f45153ccec4313e4f6f (patch)
treeb032acfd643cccd5fec6389a7fc9fd8bf9062833 /src
parent1c36b8bf530e80d848b2e67acd99588ecfb1e440 (diff)
downloadsystemd-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.c21
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;