summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/core/execute.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/core/execute.c b/src/core/execute.c
index e821133eea..8982af10aa 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -145,7 +145,7 @@ int exec_context_apply_tty_size(
void exec_context_tty_reset(const ExecContext *context, const ExecParameters *p) {
_cleanup_close_ int _fd = -EBADF, lock_fd = -EBADF;
- int fd;
+ int fd, r;
assert(context);
@@ -172,13 +172,19 @@ void exec_context_tty_reset(const ExecContext *context, const ExecParameters *p)
else if (lock_fd < 0)
log_warning_errno(lock_fd, "Failed to lock /dev/console, proceeding without lock: %m");
- if (context->tty_vhangup)
- (void) terminal_vhangup_fd(fd);
-
if (context->tty_reset)
(void) terminal_reset_defensive(fd, /* switch_to_text= */ true);
- (void) exec_context_apply_tty_size(context, fd, fd, path);
+ r = exec_context_apply_tty_size(context, fd, fd, path);
+ if (r < 0)
+ log_debug_errno(r, "Failed to configure TTY dimensions, ignoring: %m");
+
+ if (context->tty_vhangup)
+ (void) terminal_vhangup_fd(fd);
+
+ /* We don't need the fd anymore now, and it potentially points to a hungup TTY anyway, let's close it
+ * hence. */
+ _fd = safe_close(_fd);
if (context->tty_vt_disallocate && path)
(void) vt_disallocate(path);