summaryrefslogtreecommitdiffstats
path: root/sys/nfsclient
diff options
context:
space:
mode:
authorjmallett <jmallett@FreeBSD.org>2002-09-30 21:15:33 +0000
committerjmallett <jmallett@FreeBSD.org>2002-09-30 21:15:33 +0000
commit068343413ccde8287535b146d2cbce873431bf5a (patch)
treef9c28dc5fe6eb345ba380ff755a1a1bdf9f8bb27 /sys/nfsclient
parentf350519764aa2a5ac7d6daaee05afd36a81279c5 (diff)
downloadFreeBSD-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.c6
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);
}
OpenPOWER on IntegriCloud