--- a/sys/vfs/hammer2/hammer2_inode.c +++ b/sys/vfs/hammer2/hammer2_inode.c @@ -789,11 +808,22 @@ vp->v_type = VSOCK; break; default: - panic("hammer2: unhandled objtype %d", - ip->meta.type); + /* + * DF-2636: meta.type is taken from media and is + * not validated on the mount path. Do not panic + * the kernel on a crafted or corrupted image. + */ + kprintf("hammer2: unhandled objtype %d inum %ld\n", + ip->meta.type, (long)ip->meta.inum); + vp->v_type = VBAD; + vx_put(vp); + vp = NULL; + *errorp = EINVAL; break; } + if (vp == NULL) + break; if (ip == pmp->iroot) vsetflags(vp, VROOT);