aboutsummaryrefslogtreecommitdiff
path: root/sys/compat
diff options
context:
space:
mode:
authorDmitry Chagin <dchagin@FreeBSD.org>2023-09-18 14:53:01 +0000
committerDmitry Chagin <dchagin@FreeBSD.org>2023-09-18 14:53:01 +0000
commit227d01c1bc7caf2e838ee6eef1e6a3cc81d79d1b (patch)
tree7c08da2dc60d22af1b88d079b7f7f17f615c3eb7 /sys/compat
parent794328fbc174360a09b6ad341624e9bce46f0d2e (diff)
downloadsrc-227d01c1bc7caf2e838ee6eef1e6a3cc81d79d1b.tar.gz
src-227d01c1bc7caf2e838ee6eef1e6a3cc81d79d1b.zip
linux(4): On Linux SIGKILL can not be reset to default
MFC after: 1 week
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/linux/linux_signal.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/compat/linux/linux_signal.c b/sys/compat/linux/linux_signal.c
index e3e3fc74a6a9..9a84700b3949 100644
--- a/sys/compat/linux/linux_signal.c
+++ b/sys/compat/linux/linux_signal.c
@@ -170,6 +170,7 @@ linux_do_sigaction(struct thread *td, int linux_sig, l_sigaction_t *linux_nsa,
if (!LINUX_SIG_VALID(linux_sig))
return (EINVAL);
+ sig = linux_to_bsd_signal(linux_sig);
osa = (linux_osa != NULL) ? &oact : NULL;
if (linux_nsa != NULL) {
@@ -180,9 +181,11 @@ linux_do_sigaction(struct thread *td, int linux_sig, l_sigaction_t *linux_nsa,
linux_ktrsigset(&linux_nsa->lsa_mask,
sizeof(linux_nsa->lsa_mask));
#endif
+ if ((sig == SIGKILL || sig == SIGSTOP) &&
+ nsa->sa_handler == SIG_DFL)
+ return (EINVAL);
} else
nsa = NULL;
- sig = linux_to_bsd_signal(linux_sig);
error = kern_sigaction(td, sig, nsa, osa, 0);
if (error != 0)