aboutsummaryrefslogtreecommitdiff
path: root/sys/compat/linux
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2003-04-25 19:26:18 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2003-04-25 19:26:18 +0000
commit19dde5cd3bfa1ac7b0980022c3a13c771f51d84d (patch)
treee01a16d61d78df65d550803daf7b43f5f79b8c9f /sys/compat/linux
parent90d1947ebc4a7bf0437c526b146004aa6a48f45d (diff)
Notes
Diffstat (limited to 'sys/compat/linux')
-rw-r--r--sys/compat/linux/linux_signal.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/sys/compat/linux/linux_signal.c b/sys/compat/linux/linux_signal.c
index a69f27d07c80..4eb92e467550 100644
--- a/sys/compat/linux/linux_signal.c
+++ b/sys/compat/linux/linux_signal.c
@@ -233,14 +233,25 @@ linux_do_sigprocmask(struct thread *td, int how, l_sigset_t *new,
td->td_retval[0] = 0;
+ switch (how) {
+ case LINUX_SIG_BLOCK:
+ how = SIG_BLOCK;
+ break;
+ case LINUX_SIG_UNBLOCK:
+ how = SIG_UNBLOCK;
+ break;
+ case LINUX_SIG_SETMASK:
+ how = SIG_SETMASK;
+ break;
+ default:
+ return (EINVAL);
+ }
if (new != NULL) {
linux_to_bsd_sigset(new, &nmask);
nmaskp = &nmask;
} else
nmaskp = NULL;
-
- /* Linux sigprocmask flag values are one less than FreeBSD values. */
- error = kern_sigprocmask(td, how + 1, nmaskp, &omask, 0);
+ error = kern_sigprocmask(td, how, nmaskp, &omask, 0);
if (error != 0 && old != NULL)
bsd_to_linux_sigset(&omask, old);