diff options
author | ssouhlal <ssouhlal@FreeBSD.org> | 2005-09-03 20:23:41 +0000 |
---|---|---|
committer | ssouhlal <ssouhlal@FreeBSD.org> | 2005-09-03 20:23:41 +0000 |
commit | 5ea64800e11afe3896814e88b7bf7975800b5000 (patch) | |
tree | e7358d5e6b1108dc93a692e869b9e13e75eb2535 /sys/gnu | |
parent | 516e4da61f61ff79186706603c0f53e3362bab9f (diff) | |
download | FreeBSD-src-5ea64800e11afe3896814e88b7bf7975800b5000.zip FreeBSD-src-5ea64800e11afe3896814e88b7bf7975800b5000.tar.gz |
Unbreak hpfs/ntfs/udf/ext2fs/reiserfs mounting.
Another pointyhat to: ssouhlal
Diffstat (limited to 'sys/gnu')
-rw-r--r-- | sys/gnu/fs/ext2fs/ext2_vfsops.c | 7 | ||||
-rw-r--r-- | sys/gnu/fs/reiserfs/reiserfs_vfsops.c | 4 |
2 files changed, 6 insertions, 5 deletions
diff --git a/sys/gnu/fs/ext2fs/ext2_vfsops.c b/sys/gnu/fs/ext2fs/ext2_vfsops.c index d125a24..b801b97 100644 --- a/sys/gnu/fs/ext2fs/ext2_vfsops.c +++ b/sys/gnu/fs/ext2fs/ext2_vfsops.c @@ -276,9 +276,10 @@ ext2_mount(mp, td) if ((mp->mnt_flag & MNT_UPDATE) == 0) { error = ext2_mountfs(devvp, mp, td); } else { - if (devvp != ump->um_devvp) - error = EINVAL; /* needs translation */ - else + if (devvp != ump->um_devvp) { + vput(devvp); + return (EINVAL); /* needs translation */ + } else vput(devvp); } if (error) { diff --git a/sys/gnu/fs/reiserfs/reiserfs_vfsops.c b/sys/gnu/fs/reiserfs/reiserfs_vfsops.c index 0acaf44..db95112 100644 --- a/sys/gnu/fs/reiserfs/reiserfs_vfsops.c +++ b/sys/gnu/fs/reiserfs/reiserfs_vfsops.c @@ -142,7 +142,8 @@ reiserfs_mount(struct mount *mp, struct thread *td) error = reiserfs_mountfs(devvp, mp, td); } else { /* TODO Handle MNT_UPDATE */ - error = (EOPNOTSUPP); + vput(devvp); + return (EOPNOTSUPP); } if (error) { @@ -471,7 +472,6 @@ reiserfs_mountfs(struct vnode *devvp, struct mount *mp, struct thread *td) if (vcount(devvp) > 1) return (EBUSY); - vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, td); error = vinvalbuf(devvp, V_SAVE, td->td_ucred, td, 0, 0); if (error) { VOP_UNLOCK(devvp, 0, td); |