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
This commit is contained in:
Lennart Poettering
2024-02-09 14:19:20 +01:00
parent a0f6b68135
commit f244e7a7ea
2 changed files with 6 additions and 8 deletions
+2
View File
@@ -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");
+4 -8
View File
@@ -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);