Author: kib
Date: Fri Nov  5 21:13:16 2010
New Revision: 214851
URL: http://svn.freebsd.org/changeset/base/214851

Log:
  Fix a bug in r214049. The nvp == vp case shall be handled specially
  only for !usevget case. If VFS_VGET is working, the vnode shared lock
  is obtained recursively and vput() shall be done, not vunref().
  
  Submitted by: rmacklem
  Tested by:    Josh Carroll <josh.carroll gmail com>
  MFC after:    3 days

Modified:
  head/sys/nfsserver/nfs_serv.c

Modified: head/sys/nfsserver/nfs_serv.c
==============================================================================
--- head/sys/nfsserver/nfs_serv.c       Fri Nov  5 20:58:18 2010        
(r214850)
+++ head/sys/nfsserver/nfs_serv.c       Fri Nov  5 21:13:16 2010        
(r214851)
@@ -3252,7 +3252,7 @@ again:
                        nfhp->fh_fsid = nvp->v_mount->mnt_stat.f_fsid;
                        if ((error1 = VOP_VPTOFH(nvp, &nfhp->fh_fid)) == 0)
                                error1 = VOP_GETATTR(nvp, vap, cred);
-                       if (vp == nvp)
+                       if (!usevget && vp == nvp)
                                vunref(nvp);
                        else
                                vput(nvp);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to