summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient/nfs_socket.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2006-07-08 15:39:11 +0000
committerkib <kib@FreeBSD.org>2006-07-08 15:39:11 +0000
commit574ae24779e4b068d00df2f57f46723ba7d7752d (patch)
treef13a6e32b453c7f68957e12f90c8e070442819a3 /sys/nfsclient/nfs_socket.c
parent54b7822070dd487576059a32c030d99178ecb7bf (diff)
downloadFreeBSD-src-574ae24779e4b068d00df2f57f46723ba7d7752d.zip
FreeBSD-src-574ae24779e4b068d00df2f57f46723ba7d7752d.tar.gz
Signals may be delivered to process as well as to the thread. Check the
thread-delivered signals in addition to the process one. Reviewed by: mohan MFC after: 1 month Approved by: kan (mentor)
Diffstat (limited to 'sys/nfsclient/nfs_socket.c')
-rw-r--r--sys/nfsclient/nfs_socket.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c
index 5e12939..46d52bf 100644
--- a/sys/nfsclient/nfs_socket.c
+++ b/sys/nfsclient/nfs_socket.c
@@ -1701,11 +1701,13 @@ nfs_sigintr(struct nfsmount *nmp, struct nfsreq *rep, struct thread *td)
p = td->td_proc;
PROC_LOCK(p);
tmpset = p->p_siglist;
+ SIGSETOR(tmpset, td->td_siglist);
SIGSETNAND(tmpset, td->td_sigmask);
mtx_lock(&p->p_sigacts->ps_mtx);
SIGSETNAND(tmpset, p->p_sigacts->ps_sigignore);
mtx_unlock(&p->p_sigacts->ps_mtx);
- if (SIGNOTEMPTY(p->p_siglist) && nfs_sig_pending(tmpset)) {
+ if ((SIGNOTEMPTY(p->p_siglist) || SIGNOTEMPTY(td->td_siglist))
+ && nfs_sig_pending(tmpset)) {
PROC_UNLOCK(p);
return (EINTR);
}
OpenPOWER on IntegriCloud