From d83ed0fac0cc10daabc3198fde20003ff486daf9 Mon Sep 17 00:00:00 2001 From: Alfred Perlstein Date: Tue, 13 Jul 2004 07:05:38 +0000 Subject: Do not call sorecieve() in the context of a socket callback as it causes lock order reversals so->inpcb since we're called with the socket lock held. --- sys/nfsserver/nfs_srvsock.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'sys/nfsserver') diff --git a/sys/nfsserver/nfs_srvsock.c b/sys/nfsserver/nfs_srvsock.c index d43b97a21e6d..fe915682598d 100644 --- a/sys/nfsserver/nfs_srvsock.c +++ b/sys/nfsserver/nfs_srvsock.c @@ -433,16 +433,18 @@ nfsrv_rcv(struct socket *so, void *arg, int waitflag) /* XXXRW: Unlocked read. */ if ((slp->ns_flag & SLP_VALID) == 0) return; -#ifdef notdef + /* - * Define this to test for nfsds handling this under heavy load. + * We can't do this in the context of a socket callback + * because we're called with locks held. + * XXX: SMP */ if (waitflag == M_DONTWAIT) { NFSD_LOCK(); slp->ns_flag |= SLP_NEEDQ; goto dorecs; } -#endif + NFSD_LOCK(); auio.uio_td = NULL; -- cgit v1.3