summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ffs
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2009-01-29 16:47:15 +0000
committertrasz <trasz@FreeBSD.org>2009-01-29 16:47:15 +0000
commitd27cdd2fdd1b3c6f17b9a97f484bca9fad2760df (patch)
tree8fbcb89cb6e811142755e73eae11292de6d31dd7 /sys/ufs/ffs
parent37ae761d1d82e84a9dae032948a48455ece8e45f (diff)
downloadFreeBSD-src-d27cdd2fdd1b3c6f17b9a97f484bca9fad2760df.zip
FreeBSD-src-d27cdd2fdd1b3c6f17b9a97f484bca9fad2760df.tar.gz
Make sure the cdev doesn't go away while the filesystem is still mounted.
Otherwise dev2udev() could return garbage. Reviewed by: kib Approved by: rwatson (mentor) Sponsored by: FreeBSD Foundation
Diffstat (limited to 'sys/ufs/ffs')
-rw-r--r--sys/ufs/ffs/ffs_vfsops.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c
index d5a1a4f..b9ad090 100644
--- a/sys/ufs/ffs/ffs_vfsops.c
+++ b/sys/ufs/ffs/ffs_vfsops.c
@@ -641,6 +641,7 @@ ffs_mountfs(devvp, mp, td)
VOP_UNLOCK(devvp, 0);
if (error)
return (error);
+ dev_ref(dev);
if (devvp->v_rdev->si_iosize_max != 0)
mp->mnt_iosize_max = devvp->v_rdev->si_iosize_max;
if (mp->mnt_iosize_max > MAXPHYS)
@@ -921,6 +922,7 @@ out:
free(ump, M_UFSMNT);
mp->mnt_data = NULL;
}
+ dev_rel(dev);
return (error);
}
@@ -1107,6 +1109,7 @@ ffs_unmount(mp, mntflags, td)
g_topology_unlock();
PICKUP_GIANT();
vrele(ump->um_devvp);
+ dev_rel(ump->um_dev);
mtx_destroy(UFS_MTX(ump));
if (mp->mnt_gjprovider != NULL) {
free(mp->mnt_gjprovider, M_UFSMNT);
OpenPOWER on IntegriCloud