diff options
author | kib <kib@FreeBSD.org> | 2016-10-03 09:37:56 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2016-10-03 09:37:56 +0000 |
commit | bb7f69cb2585cb74e0e9a622f0c15e3d2d3ab982 (patch) | |
tree | 8fc6bee6efbf0c43de9a786e34c3324609a9d94a /sys/ufs/ufs | |
parent | 2143ca3d1331a5230f0dc67de00726e50218ef40 (diff) | |
download | FreeBSD-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.c | 7 |
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", |