diff options
author | jmallett <jmallett@FreeBSD.org> | 2002-09-30 21:15:33 +0000 |
---|---|---|
committer | jmallett <jmallett@FreeBSD.org> | 2002-09-30 21:15:33 +0000 |
commit | 068343413ccde8287535b146d2cbce873431bf5a (patch) | |
tree | f9c28dc5fe6eb345ba380ff755a1a1bdf9f8bb27 /sys/nfsclient | |
parent | f350519764aa2a5ac7d6daaee05afd36a81279c5 (diff) | |
download | FreeBSD-src-068343413ccde8287535b146d2cbce873431bf5a.zip FreeBSD-src-068343413ccde8287535b146d2cbce873431bf5a.tar.gz |
Lock access to the signal queue, and related structures, with PROC_LOCK.
Submitted by: jhb
Diffstat (limited to 'sys/nfsclient')
-rw-r--r-- | sys/nfsclient/nfs_socket.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_socket.c b/sys/nfsclient/nfs_socket.c index 192e251..08e53e9 100644 --- a/sys/nfsclient/nfs_socket.c +++ b/sys/nfsclient/nfs_socket.c @@ -1240,11 +1240,15 @@ nfs_sigintr(struct nfsmount *nmp, struct nfsreq *rep, struct thread *td) return (0); p = td->td_proc; + PROC_LOCK(p); ksiginfo_to_sigset_t(p, &tmpset); SIGSETNAND(tmpset, p->p_sigmask); SIGSETNAND(tmpset, p->p_sigignore); - if (signal_queued(p, 0) && NFSINT_SIGMASK(tmpset)) + if (signal_queued(p, 0) && NFSINT_SIGMASK(tmpset)) { + PROC_UNLOCK(p); return (EINTR); + } + PROC_UNLOCK(p); return (0); } |