From f8217f350bcfc82b94c814a04faf8cdd5326d033 Mon Sep 17 00:00:00 2001 From: ssouhlal Date: Fri, 2 Sep 2005 15:27:23 +0000 Subject: *_mountfs() (if the filesystem mounts from a device) needs devvp to be locked, so lock it. Glanced at by: phk MFC after: 3 days --- sys/gnu/fs/reiserfs/reiserfs_vfsops.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'sys/gnu/fs/reiserfs/reiserfs_vfsops.c') diff --git a/sys/gnu/fs/reiserfs/reiserfs_vfsops.c b/sys/gnu/fs/reiserfs/reiserfs_vfsops.c index 4bb425a..0acaf44 100644 --- a/sys/gnu/fs/reiserfs/reiserfs_vfsops.c +++ b/sys/gnu/fs/reiserfs/reiserfs_vfsops.c @@ -114,14 +114,14 @@ reiserfs_mount(struct mount *mp, struct thread *td) if (fspec == NULL) return (EINVAL); - NDINIT(ndp, LOOKUP, FOLLOW, UIO_SYSSPACE, fspec, td); + NDINIT(ndp, LOOKUP, FOLLOW | LOCKLEAF, UIO_SYSSPACE, fspec, td); if ((error = namei(ndp)) != 0) return (error); NDFREE(ndp, NDF_ONLY_PNBUF); devvp = ndp->ni_vp; if (!vn_isdisk(devvp, &error)) { - vrele(devvp); + vput(devvp); return (error); } @@ -131,13 +131,11 @@ reiserfs_mount(struct mount *mp, struct thread *td) accessmode = VREAD; if ((mp->mnt_flag & MNT_RDONLY) == 0) accessmode |= VWRITE; - vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, td); if ((error = VOP_ACCESS(devvp, accessmode, td->td_ucred, td)) != 0) { vput(devvp); return (error); } - VOP_UNLOCK(devvp, 0, td); } if ((mp->mnt_flag & MNT_UPDATE) == 0) { -- cgit v1.1