dev-setup: Follow /dev/console symlinks when locking /dev/console
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 7 Jun 2024 13:10:58 +0000 (15:10 +0200)
committerLuca Boccassi <luca.boccassi@gmail.com>
Fri, 7 Jun 2024 22:36:43 +0000 (23:36 +0100)
systemd-nspawn sets up /dev/console as a symlink to a pty, so let's
make sure we follow the symlink when trying to lock /dev/console so
we don't fail with ELOOP.

src/shared/dev-setup.c

index 5dbf064e7749e666dc058dc98df87eabc5c2c59e..4b4b62565c5145c28956e7cbe044944c2240f36e 100644 (file)
@@ -22,7 +22,9 @@ int lock_dev_console(void) {
         _cleanup_close_ int fd = -EBADF;
         int r;
 
-        fd = open_terminal("/dev/console", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
+        /* NB: We do not use O_NOFOLLOW here, because some container managers might place a symlink to some
+         * pty in /dev/console, in which case it should be fine to lock the target TTY. */
+        fd = open_terminal("/dev/console", O_RDONLY|O_CLOEXEC|O_NOCTTY);
         if (fd < 0)
                 return fd;