diff options
author | kib <kib@FreeBSD.org> | 2006-07-08 15:39:11 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2006-07-08 15:39:11 +0000 |
commit | 574ae24779e4b068d00df2f57f46723ba7d7752d (patch) | |
tree | f13a6e32b453c7f68957e12f90c8e070442819a3 /sys/nfsclient | |
parent | 54b7822070dd487576059a32c030d99178ecb7bf (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/nfsclient/nfs_socket.c | 4 |
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); } |