diff options
| author | Ed Maste <emaste@FreeBSD.org> | 2025-09-30 19:39:34 +0000 |
|---|---|---|
| committer | Ed Maste <emaste@FreeBSD.org> | 2025-11-27 00:19:04 +0000 |
| commit | 5198c32210039d8dc92554647384eee75688848c (patch) | |
| tree | b980210e895f1e0771085cac13d6d5e574fb75ef | |
| parent | ddec4209b10d65ef19e1d1b884e1b876eab58c7d (diff) | |
vt: Allow VT_SETMODE with frsig=0
Linux does not check that any of the signals in vt_mode VT_SETMODE ioctl
(relsig, acqsig, frsig) are valid, but FreeBSD required that all three
are valid. frsig is unusued in both Linux and FreeBSD, and software
typically leaves it unset. To improve portability, allow frsig to be
set to zero.
PR: 289812
Reported by: Dušan Gvozdenović
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D52835
| -rw-r--r-- | sys/dev/vt/vt_core.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c index a1376be954ee..5e8f7b1d0bb7 100644 --- a/sys/dev/vt/vt_core.c +++ b/sys/dev/vt/vt_core.c @@ -3046,9 +3046,9 @@ skip_thunk: DPRINTF(5, "reset WAIT_ACQ, "); return (0); } else if (mode->mode == VT_PROCESS) { - if (!ISSIGVALID(mode->relsig) || - !ISSIGVALID(mode->acqsig) || - !ISSIGVALID(mode->frsig)) { + if (!(ISSIGVALID(mode->relsig) && + ISSIGVALID(mode->acqsig) && + (mode->frsig == 0 || ISSIGVALID(mode->frsig)))) { DPRINTF(5, "error EINVAL\n"); return (EINVAL); } |
