diff options
| author | Matthew Dillon <dillon@FreeBSD.org> | 2001-12-27 19:40:34 +0000 |
|---|---|---|
| committer | Matthew Dillon <dillon@FreeBSD.org> | 2001-12-27 19:40:34 +0000 |
| commit | 885d36ce36bf9f79e43d0d91b0f185ad07e6f5cd (patch) | |
| tree | 0384cbe2d79f6cec7d3fd1b89b4efab5a7af9ae2 /sys/nfsclient/nfs_node.c | |
| parent | 979c74a0aff9c151928779e0d9a227ce20af28f6 (diff) | |
Notes
Diffstat (limited to 'sys/nfsclient/nfs_node.c')
| -rw-r--r-- | sys/nfsclient/nfs_node.c | 5 |
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); |
