From: Yu Watanabe Date: Fri, 3 Nov 2023 05:29:59 +0000 (+0900) Subject: virt: also check if PID1 is in chroot X-Git-Tag: v255-rc1~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7636caf5b32d98b094f2830f52ff5c46e3a22a68;p=thirdparty%2Fsystemd.git virt: also check if PID1 is in chroot In PID1, running_in_chroot() is called by safety_checks(), but without this change, the check did nothing. --- diff --git a/src/basic/virt.c b/src/basic/virt.c index 4e2a4f7fcdd..a0b6fbcd658 100644 --- a/src/basic/virt.c +++ b/src/basic/virt.c @@ -886,15 +886,15 @@ int running_in_chroot(void) { if (getenv_bool("SYSTEMD_IGNORE_CHROOT") > 0) return 0; - if (getpid_cached() == 1) - return false; /* We're PID 1, we can't be in a chroot. */ - r = inode_same("/proc/1/root", "/", 0); if (r == -ENOENT) { r = proc_mounted(); if (r == 0) { + if (getpid_cached() == 1) + return false; /* We will mount /proc, assuming we're not in a chroot. */ + log_debug("/proc is not mounted, assuming we're in a chroot."); - return 1; + return true; } if (r > 0) /* If we have fake /proc/, we can't do the check properly. */ return -ENOSYS;