From: Matthew Dillon Date: Wed, 20 Oct 2010 16:45:19 +0000 (-0700) Subject: devfs - Fix broken assertion X-Git-Tag: v2.9.1~120 X-Git-Url: http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/fb12e9a5b3acecedcc888a0ad723826f184c8183 devfs - Fix broken assertion * When checking fp->f_flag against ap->a_mode both sides must be masked with FMASK. * Fixes a panic which can occur when a unix domain socket is being garbage collected (FMARK set). --- diff --git a/sys/vfs/devfs/devfs_vnops.c b/sys/vfs/devfs/devfs_vnops.c index 4916632..013e06f 100644 --- a/sys/vfs/devfs/devfs_vnops.c +++ b/sys/vfs/devfs/devfs_vnops.c @@ -996,7 +996,7 @@ devfs_spec_open(struct vop_open_args *ap) if (ap->a_fp) { KKASSERT(ap->a_fp->f_type == DTYPE_VNODE); - KKASSERT(ap->a_fp->f_flag == (ap->a_mode & FMASK)); + KKASSERT((ap->a_fp->f_flag & FMASK) == (ap->a_mode & FMASK)); ap->a_fp->f_ops = &devfs_dev_fileops; KKASSERT(ap->a_fp->f_data == (void *)vp); }