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)
This commit is contained in:
parent
201599c3af
commit
c915bcbad2
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=160182
@ -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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user