From 729fe7fb1fd97dc161e5273b595a8a6caaee86f4 Mon Sep 17 00:00:00 2001 From: dwmalone Date: Fri, 14 Jul 2000 11:52:56 +0000 Subject: Certain error contitions cause msdosfs_rename() to decrement the vnode reference count on 'fdvp' more times than it should. PR: 17347 Submitted by: Ian Dowse Approved by: bde --- sys/fs/msdosfs/msdosfs_vnops.c | 4 ++-- sys/msdosfs/msdosfs_vnops.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c index a5c4365..10ebaf8 100644 --- a/sys/fs/msdosfs/msdosfs_vnops.c +++ b/sys/fs/msdosfs/msdosfs_vnops.c @@ -1093,7 +1093,6 @@ abortit: VOP_UNLOCK(fvp, 0, p); if (VTODE(fdvp)->de_StartCluster != VTODE(tdvp)->de_StartCluster) newparent = 1; - vrele(fdvp); if (doingdirectory && newparent) { if (error) /* write access check above */ goto bad; @@ -1161,7 +1160,8 @@ abortit: panic("msdosfs_rename: lost from startdir"); if (!newparent) VOP_UNLOCK(tdvp, 0, p); - (void) relookup(fdvp, &fvp, fcnp); + if (relookup(fdvp, &fvp, fcnp) == 0) + vrele(fdvp); if (fvp == NULL) { /* * From name has disappeared. diff --git a/sys/msdosfs/msdosfs_vnops.c b/sys/msdosfs/msdosfs_vnops.c index a5c4365..10ebaf8 100644 --- a/sys/msdosfs/msdosfs_vnops.c +++ b/sys/msdosfs/msdosfs_vnops.c @@ -1093,7 +1093,6 @@ abortit: VOP_UNLOCK(fvp, 0, p); if (VTODE(fdvp)->de_StartCluster != VTODE(tdvp)->de_StartCluster) newparent = 1; - vrele(fdvp); if (doingdirectory && newparent) { if (error) /* write access check above */ goto bad; @@ -1161,7 +1160,8 @@ abortit: panic("msdosfs_rename: lost from startdir"); if (!newparent) VOP_UNLOCK(tdvp, 0, p); - (void) relookup(fdvp, &fvp, fcnp); + if (relookup(fdvp, &fvp, fcnp) == 0) + vrele(fdvp); if (fvp == NULL) { /* * From name has disappeared. -- cgit v1.1