aboutsummaryrefslogtreecommitdiff
path: root/sys/nfsclient
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2013-02-06 17:06:51 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2013-02-06 17:06:51 +0000
commita120a7a3cd47f55731d21bc551ee65aa8f03a82c (patch)
treeb7c1d4516fbc8d227d8e9d82226ffe2268726c9c /sys/nfsclient
parent23c053d6a2097a027135f96e3447dce68c016bc6 (diff)
Notes
Diffstat (limited to 'sys/nfsclient')
-rw-r--r--sys/nfsclient/nfs_krpc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/nfsclient/nfs_krpc.c b/sys/nfsclient/nfs_krpc.c
index dd441ae29de3..851b0b618389 100644
--- a/sys/nfsclient/nfs_krpc.c
+++ b/sys/nfsclient/nfs_krpc.c
@@ -699,7 +699,6 @@ int nfs_sig_set[] = {
SIGTERM,
SIGHUP,
SIGKILL,
- SIGSTOP,
SIGQUIT
};
@@ -720,7 +719,7 @@ nfs_sig_pending(sigset_t set)
/*
* The set/restore sigmask functions are used to (temporarily) overwrite
- * the process p_sigmask during an RPC call (for example). These are also
+ * the thread td_sigmask during an RPC call (for example). These are also
* used in other places in the NFS client that might tsleep().
*/
void
@@ -749,8 +748,10 @@ nfs_set_sigmask(struct thread *td, sigset_t *oldset)
SIGDELSET(newset, nfs_sig_set[i]);
}
mtx_unlock(&p->p_sigacts->ps_mtx);
+ sigdeferstop(td);
+ kern_sigprocmask(td, SIG_SETMASK, &newset, oldset,
+ SIGPROCMASK_PROC_LOCKED);
PROC_UNLOCK(p);
- kern_sigprocmask(td, SIG_SETMASK, &newset, oldset, 0);
}
void
@@ -759,6 +760,7 @@ nfs_restore_sigmask(struct thread *td, sigset_t *set)
if (td == NULL)
td = curthread; /* XXX */
kern_sigprocmask(td, SIG_SETMASK, set, NULL, 0);
+ sigallowstop(td);
}
/*