From 4a24cc859f2fc9834ce2af633d5b4c582e5627f7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 17 Jul 2024 12:20:32 +0200 Subject: [PATCH] terminal-util: move lock_dev_console() here It doesn't really make sense to have that in dev-setup.c, which is mostly about setting up /dev/, creating device nodes and stuff. let's move it to the other stuff that deals with /dev/console's peculiarities. --- src/basic/terminal-util.c | 17 +++++++++++++++++ src/basic/terminal-util.h | 1 + src/core/exec-invoke.c | 1 - src/core/execute.c | 1 - src/shared/dev-setup.c | 17 ----------------- src/shared/dev-setup.h | 2 -- 6 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index d8253037ec4..6d3a0f8a5c7 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -618,6 +618,23 @@ void reset_dev_console_fd(int fd, bool switch_to_text) { log_warning_errno(r, "Failed to reset /dev/console using ANSI sequences, ignoring: %m"); } +int lock_dev_console(void) { + _cleanup_close_ int fd = -EBADF; + int r; + + /* 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; + + r = lock_generic(fd, LOCK_BSD, LOCK_EX); + if (r < 0) + return r; + + return TAKE_FD(fd); +} + int make_console_stdio(void) { int fd, r; diff --git a/src/basic/terminal-util.h b/src/basic/terminal-util.h index 11aab24acb5..3cf0ff98485 100644 --- a/src/basic/terminal-util.h +++ b/src/basic/terminal-util.h @@ -88,6 +88,7 @@ int vtnr_from_tty(const char *tty); const char* default_term_for_tty(const char *tty); void reset_dev_console_fd(int fd, bool switch_to_text); +int lock_dev_console(void); int make_console_stdio(void); int fd_columns(int fd); diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c index 08f9188ec7d..2521e940c9b 100644 --- a/src/core/exec-invoke.c +++ b/src/core/exec-invoke.c @@ -32,7 +32,6 @@ #include "chown-recursive.h" #include "copy.h" #include "data-fd-util.h" -#include "dev-setup.h" #include "env-util.h" #include "escape.h" #include "exec-credential.h" diff --git a/src/core/execute.c b/src/core/execute.c index dc418fd14c2..cdc12779564 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -25,7 +25,6 @@ #include "cgroup-setup.h" #include "constants.h" #include "cpu-set-util.h" -#include "dev-setup.h" #include "env-file.h" #include "env-util.h" #include "errno-list.h" diff --git a/src/shared/dev-setup.c b/src/shared/dev-setup.c index 4b4b62565c5..eb72793c04b 100644 --- a/src/shared/dev-setup.c +++ b/src/shared/dev-setup.c @@ -18,23 +18,6 @@ #include "umask-util.h" #include "user-util.h" -int lock_dev_console(void) { - _cleanup_close_ int fd = -EBADF; - int r; - - /* 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; - - r = lock_generic(fd, LOCK_BSD, LOCK_EX); - if (r < 0) - return r; - - return TAKE_FD(fd); -} - int dev_setup(const char *prefix, uid_t uid, gid_t gid) { static const char symlinks[] = "-/proc/kcore\0" "/dev/core\0" diff --git a/src/shared/dev-setup.h b/src/shared/dev-setup.h index 5339bc4e5e9..92ba6cf7640 100644 --- a/src/shared/dev-setup.h +++ b/src/shared/dev-setup.h @@ -3,8 +3,6 @@ #include -int lock_dev_console(void); - int dev_setup(const char *prefix, uid_t uid, gid_t gid); int make_inaccessible_nodes(const char *parent_dir, uid_t uid, gid_t gid); -- 2.47.3