aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Maste <emaste@FreeBSD.org>2025-09-30 19:39:34 +0000
committerEd Maste <emaste@FreeBSD.org>2025-11-27 00:19:04 +0000
commit5198c32210039d8dc92554647384eee75688848c (patch)
treeb980210e895f1e0771085cac13d6d5e574fb75ef
parentddec4209b10d65ef19e1d1b884e1b876eab58c7d (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.c6
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);
}