avoid dangling reference for cdir when doing rename
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Mon, 17 Jul 1989 05:21:22 +0000 (21:21 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Mon, 17 Jul 1989 05:21:22 +0000 (21:21 -0800)
SCCS-vsn: sys/nfs/nfs_serv.c 7.5

usr/src/sys/nfs/nfs_serv.c

index 461585a..b7e327a 100644 (file)
@@ -17,7 +17,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- *     @(#)nfs_serv.c  7.4 (Berkeley) %G%
+ *     @(#)nfs_serv.c  7.5 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -738,10 +738,12 @@ out:
                VOP_ABORTOP(&tond);
                VOP_ABORTOP(ndp);
        } else {
                VOP_ABORTOP(&tond);
                VOP_ABORTOP(ndp);
        } else {
+               VREF(tond.ni_cdir);
                error = VOP_RENAME(ndp, &tond);
                error = VOP_RENAME(ndp, &tond);
+               vrele(tond.ni_cdir);
        }
 out1:
        }
 out1:
-       ndrele(&tond);
+       ndrele(ndp);
        nfsm_reply(0);
        return (error);
 nfsmout:
        nfsm_reply(0);
        return (error);
 nfsmout: