Mercurial > illumos > illumos-gate
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);