summaryrefslogtreecommitdiff
path: root/sys/nfsclient/nfs_node.c
diff options
context:
space:
mode:
authorMatthew Dillon <dillon@FreeBSD.org>2001-12-27 19:40:34 +0000
committerMatthew Dillon <dillon@FreeBSD.org>2001-12-27 19:40:34 +0000
commit885d36ce36bf9f79e43d0d91b0f185ad07e6f5cd (patch)
tree0384cbe2d79f6cec7d3fd1b89b4efab5a7af9ae2 /sys/nfsclient/nfs_node.c
parent979c74a0aff9c151928779e0d9a227ce20af28f6 (diff)
Notes
Diffstat (limited to 'sys/nfsclient/nfs_node.c')
-rw-r--r--sys/nfsclient/nfs_node.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/nfsclient/nfs_node.c b/sys/nfsclient/nfs_node.c
index 21769e227a19..ed19723abdd4 100644
--- a/sys/nfsclient/nfs_node.c
+++ b/sys/nfsclient/nfs_node.c
@@ -194,7 +194,10 @@ loop:
bcmp((caddr_t)fhp, (caddr_t)np->n_fhp, fhsize))
continue;
vp = NFSTOV(np);
- if (vget(vp, LK_EXCLUSIVE, td))
+ /*
+ * np or vp may become invalid if vget() blocks, so loop
+ */
+ if (vget(vp, LK_EXCLUSIVE|LK_SLEEPFAIL, td))
goto loop;
*npp = np;
return(0);