summaryrefslogtreecommitdiffstats
path: root/sys/fs/hpfs
diff options
context:
space:
mode:
authorssouhlal <ssouhlal@FreeBSD.org>2005-09-02 15:27:23 +0000
committerssouhlal <ssouhlal@FreeBSD.org>2005-09-02 15:27:23 +0000
commitf8217f350bcfc82b94c814a04faf8cdd5326d033 (patch)
tree6d3fd63626ff1d58add99ac395ebda844196e694 /sys/fs/hpfs
parent912d183e0b4eff2d1cfeacc98dc5720f1461a947 (diff)
downloadFreeBSD-src-f8217f350bcfc82b94c814a04faf8cdd5326d033.zip
FreeBSD-src-f8217f350bcfc82b94c814a04faf8cdd5326d033.tar.gz
*_mountfs() (if the filesystem mounts from a device) needs devvp to be
locked, so lock it. Glanced at by: phk MFC after: 3 days
Diffstat (limited to 'sys/fs/hpfs')
-rw-r--r--sys/fs/hpfs/hpfs_vfsops.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/sys/fs/hpfs/hpfs_vfsops.c b/sys/fs/hpfs/hpfs_vfsops.c
index 5ce5215..69f7a78 100644
--- a/sys/fs/hpfs/hpfs_vfsops.c
+++ b/sys/fs/hpfs/hpfs_vfsops.c
@@ -161,7 +161,7 @@ hpfs_mount (
* Not an update, or updating the name: look up the name
* and verify that it refers to a sensible block device.
*/
- NDINIT(&ndp, LOOKUP, FOLLOW, UIO_SYSSPACE, from, td);
+ NDINIT(&ndp, LOOKUP, FOLLOW | LOCKLEAF, UIO_SYSSPACE, from, td);
err = namei(&ndp);
if (err) {
/* can't get devvp!*/
@@ -170,8 +170,10 @@ hpfs_mount (
devvp = ndp.ni_vp;
- if (!vn_isdisk(devvp, &err))
- goto error_2;
+ if (!vn_isdisk(devvp, &err)) {
+ vput(devvp);
+ return (err);
+ }
/*
********************
@@ -197,12 +199,6 @@ hpfs_mount (
goto success;
-
-error_2: /* error with devvp held*/
-
- /* release devvp before failing*/
- vrele(devvp);
-
error_1: /* no state to back out*/
/* XXX: Missing NDFREE(&ndp, ...) */
OpenPOWER on IntegriCloud