changeset 5071:4971d68c8d60

6605258 NFS server panic at: nfssrv:rfs4_findfile
author jwahlig
date Mon, 17 Sep 2007 13:28:16 -0700
parents f1c8fa0cbaca
children a2b6f90cc61e
files usr/src/uts/common/fs/nfs/nfs4_state.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/fs/nfs/nfs4_state.c	Mon Sep 17 13:08:11 2007 -0700
+++ b/usr/src/uts/common/fs/nfs/nfs4_state.c	Mon Sep 17 13:28:16 2007 -0700
@@ -3828,14 +3828,19 @@
 	    bcmp(&finfo_fhp->fh4_xdata, &exi_fhp->fh4_xdata,
 	    exi_fhp->fh4_xlen) == 0) {
 		if (fp->vp) {
+			vnode_t *vp = fp->vp;
+
 			/* don't leak monitors */
 			if (fp->dinfo->dtype == OPEN_DELEGATE_READ)
-				(void) fem_uninstall(fp->vp, deleg_rdops,
+				(void) fem_uninstall(vp, deleg_rdops,
 				    (void *)fp);
 			else if (fp->dinfo->dtype == OPEN_DELEGATE_WRITE)
-				(void) fem_uninstall(fp->vp, deleg_wrops,
+				(void) fem_uninstall(vp, deleg_wrops,
 				    (void *)fp);
-			VN_RELE(fp->vp);
+			mutex_enter(&vp->v_lock);
+			(void) vsd_set(vp, nfs4_srv_vkey, NULL);
+			mutex_exit(&vp->v_lock);
+			VN_RELE(vp);
 			fp->vp = NULL;
 		}
 		rfs4_dbe_invalidate(fp->dbe);