summaryrefslogtreecommitdiffstats
path: root/sys/ufs/ufs
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2016-10-03 09:37:56 +0000
committerkib <kib@FreeBSD.org>2016-10-03 09:37:56 +0000
commitbb7f69cb2585cb74e0e9a622f0c15e3d2d3ab982 (patch)
tree8fc6bee6efbf0c43de9a786e34c3324609a9d94a /sys/ufs/ufs
parent2143ca3d1331a5230f0dc67de00726e50218ef40 (diff)
downloadFreeBSD-src-bb7f69cb2585cb74e0e9a622f0c15e3d2d3ab982.zip
FreeBSD-src-bb7f69cb2585cb74e0e9a622f0c15e3d2d3ab982.tar.gz
MFC r305977:
Be more strict when selecting between snapshot/regular mount.
Diffstat (limited to 'sys/ufs/ufs')
-rw-r--r--sys/ufs/ufs/ufs_gjournal.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/ufs/ufs/ufs_gjournal.c b/sys/ufs/ufs/ufs_gjournal.c
index ecac26c..807393d 100644
--- a/sys/ufs/ufs/ufs_gjournal.c
+++ b/sys/ufs/ufs/ufs_gjournal.c
@@ -71,14 +71,17 @@ ufs_gjournal_modref(struct vnode *vp, int count)
ino = ip->i_number;
cg = ino_to_cg(fs, ino);
- if (devvp->v_type != VCHR) {
+ if (devvp->v_type == VREG) {
/* devvp is a snapshot */
dev = VFSTOUFS(devvp->v_mount)->um_devvp->v_rdev;
cgbno = fragstoblks(fs, cgtod(fs, cg));
- } else {
+ } else if (devvp->v_type == VCHR) {
/* devvp is a normal disk device */
dev = devvp->v_rdev;
cgbno = fsbtodb(fs, cgtod(fs, cg));
+ } else {
+ bp = NULL;
+ return (EIO);
}
if ((u_int)ino >= fs->fs_ipg * fs->fs_ncg)
panic("ufs_gjournal_modref: range: dev = %s, ino = %lu, fs = %s",
OpenPOWER on IntegriCloud