From f244e7a7ead3194807a367a986f2d8427b3b0888 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 9 Feb 2024 12:55:27 +0100 Subject: [PATCH] pid1,vconsole-setup: gracefully handle if /dev/vconsole is not accessible due to ENODEV I think this is generally the right thing to do and is just an extension of the existing ENOENT check. Prompted by: #31257 --- src/core/execute.c | 2 ++ src/vconsole/vconsole-setup.c | 12 ++++-------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index b91513c5da8..fb3e9b79cbe 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -163,6 +163,8 @@ void exec_context_tty_reset(const ExecContext *context, const ExecParameters *p) lock_fd = lock_dev_console(); if (ERRNO_IS_NEG_PRIVILEGE(lock_fd)) log_debug_errno(lock_fd, "No privileges to lock /dev/console, proceeding without: %m"); + else if (ERRNO_IS_NEG_DEVICE_ABSENT(lock_fd)) + log_debug_errno(lock_fd, "Device /dev/console does not exist, proceeding without locking it: %m"); else if (lock_fd < 0) return (void) log_debug_errno(lock_fd, "Failed to lock /dev/console: %m"); diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index 83e43b16ff9..554d00e5b75 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -624,14 +624,10 @@ static int run(int argc, char **argv) { /* Take lock around the remaining operation to avoid being interrupted by a tty reset operation * performed for services with TTYVHangup=yes. */ lock_fd = lock_dev_console(); - if (lock_fd < 0) { - log_full_errno(lock_fd == -ENOENT ? LOG_DEBUG : LOG_ERR, - lock_fd, - "Failed to lock /dev/console%s: %m", - lock_fd == -ENOENT ? ", ignoring" : ""); - if (lock_fd != -ENOENT) - return lock_fd; - } + if (ERRNO_IS_NEG_DEVICE_ABSENT(lock_fd)) + log_debug_errno(lock_fd, "Device /dev/console does not exist, proceeding without locking it: %m"); + else if (lock_fd < 0) + return log_error_errno(lock_fd, "Failed to lock /dev/console: %m"); (void) toggle_utf8_sysfs(utf8); (void) toggle_utf8_vc(vc, fd, utf8); -- 2.47.3