aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2023-09-25 16:36:04 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2023-10-09 03:42:17 +0000
commitff4e7f52471d7ce6d3ca8fe563f64bda6a88bb28 (patch)
treea6d88351bbec7a16e2b0ce3a1dfc3717a71bafb3
parent7ac1c755d05777620e47254d0526df82155df58e (diff)
downloadsrc-ff4e7f52471d7ce6d3ca8fe563f64bda6a88bb28.tar.gz
src-ff4e7f52471d7ce6d3ca8fe563f64bda6a88bb28.zip
nosys(): add kern.signosys tunable/sysctl to control SIGSYS
(cherry picked from commit 5804a1623054d865618d77cfac86978f03b8111a)
-rw-r--r--sys/kern/kern_sig.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c
index 5dd56e0ec851..f25ff1ed55a6 100644
--- a/sys/kern/kern_sig.c
+++ b/sys/kern/kern_sig.c
@@ -159,6 +159,10 @@ static int kern_lognosys = 0;
SYSCTL_INT(_kern, OID_AUTO, lognosys, CTLFLAG_RWTUN, &kern_lognosys, 0,
"Log invalid syscalls");
+static int kern_signosys = 1;
+SYSCTL_INT(_kern, OID_AUTO, signosys, CTLFLAG_RWTUN, &kern_signosys, 0,
+ "Send SIGSYS on return from invalid syscall");
+
__read_frequently bool sigfastblock_fetch_always = false;
SYSCTL_BOOL(_kern, OID_AUTO, sigfastblock_fetch_always, CTLFLAG_RWTUN,
&sigfastblock_fetch_always, 0,
@@ -4128,7 +4132,7 @@ nosys(struct thread *td, struct nosys_args *args)
p = td->td_proc;
- if (SV_PROC_FLAG(p, SV_SIGSYS) != 0) {
+ if (SV_PROC_FLAG(p, SV_SIGSYS) != 0 && kern_signosys) {
PROC_LOCK(p);
tdsignal(td, SIGSYS);
PROC_UNLOCK(p);