summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjeff <jeff@FreeBSD.org>2002-07-29 06:26:55 +0000
committerjeff <jeff@FreeBSD.org>2002-07-29 06:26:55 +0000
commit5dce00d8f10cc8069a67ca4bc4a8100a64145dd4 (patch)
tree0fd73c1d6c1f669ce97dc90799c55e6bb1208e7f
parentca32cecfcfe6ceb74d047ffd192584fc8c38fe1c (diff)
downloadFreeBSD-src-5dce00d8f10cc8069a67ca4bc4a8100a64145dd4.zip
FreeBSD-src-5dce00d8f10cc8069a67ca4bc4a8100a64145dd4.tar.gz
- Backout the patch made in revision 1.75 of vfs_mount.c. The vputs here
were hiding the real problem of the missing unlock in sync_inactive. - Add the missing unlock in sync_inactive. Submitted by: iedowse
-rw-r--r--sys/kern/vfs_mount.c6
-rw-r--r--sys/kern/vfs_subr.c1
2 files changed, 4 insertions, 3 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index bdfb1c6..1f6e1d9 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -709,7 +709,7 @@ update:
error = vfs_allocate_syncvnode(mp);
} else {
if (mp->mnt_syncer != NULL)
- vput(mp->mnt_syncer);
+ vrele(mp->mnt_syncer);
mp->mnt_syncer = NULL;
}
vfs_unbusy(mp, td);
@@ -1052,7 +1052,7 @@ update:
error = vfs_allocate_syncvnode(mp);
} else {
if (mp->mnt_syncer != NULL)
- vput(mp->mnt_syncer);
+ vrele(mp->mnt_syncer);
mp->mnt_syncer = NULL;
}
vfs_unbusy(mp, td);
@@ -1252,7 +1252,7 @@ dounmount(mp, flags, td)
mp->mnt_flag &=~ MNT_ASYNC;
cache_purgevfs(mp); /* remove cache entries for this file sys */
if (mp->mnt_syncer != NULL)
- vput(mp->mnt_syncer);
+ vrele(mp->mnt_syncer);
/* Move process cdir/rdir refs on fs root to underlying vnode. */
if (VFS_ROOT(mp, &fsrootvp) == 0) {
if (mp->mnt_vnodecovered != NULL)
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 1684782..c0b2ace 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -3080,6 +3080,7 @@ sync_inactive(ap)
} */ *ap;
{
+ VOP_UNLOCK(ap->a_vp, 0, ap->a_td);
vgone(ap->a_vp);
return (0);
}
OpenPOWER on IntegriCloud