HomeFreeBSD

syslogd: Keep console and tty descriptors open

Description

syslogd: Keep console and tty descriptors open

Console and tty descriptors are initially opened in parse_action() to
determine whether they are valid using isatty(). That descriptor is then
closed because it is never accessed by syslogd again; ttymsg() will reopen
the tty/console under a new descriptor when needed.

If the user attempts to log to a tty that is inactive outside of
syslogd, then syslogd must keep that descriptor open so the tty remains
accessible. For example, logging to /dev/ttyvb requires the initial
/dev/ttyvb descriptor to stay open so the user can view its buffer at
any time via CTRL+ALT+F12.

As a result, console and tty descriptors must remain open until a
potential configuration reload or a system shutdown. The given
descriptor will be closed in close_filed() in such circumstances.

PR: 274454
Fixes: c3175a6e1c5a ("syslogd: Do not open console descriptor")
Reported by: Trond Endrestøl <Trond.Endrestol@ximalas.info>
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D42215

Details

Provenance
jfreeAuthored on Oct 15 2023, 8:34 PM
markjCommitted on Oct 16 2023, 1:11 PM
Reviewer
markj
Differential Revision
D42215: syslogd: Keep console and tty descriptors open
Parents
rG7ef6e99752db: sade: Restore UI behavior like dialog(3)
Branches
Unknown
Tags
Unknown