diff options
Diffstat (limited to 'sys/fs/devfs')
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index 80f2dba..724f082 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -891,9 +891,8 @@ devfs_open(struct vop_open_args *ap) if(fp == NULL) return (error); #endif - KASSERT(fp->f_ops == &badfileops, - ("Could not vnode bypass device on fdops %p", fp->f_ops)); - finit(fp, fp->f_flag, DTYPE_VNODE, dev, &devfs_ops_f); + if (fp->f_ops == &badfileops) + finit(fp, fp->f_flag, DTYPE_VNODE, dev, &devfs_ops_f); return (error); } @@ -1265,8 +1264,9 @@ devfs_setattr(struct vop_setattr_args *ap) else gid = vap->va_gid; if (uid != de->de_uid || gid != de->de_gid) { - if ((ap->a_cred->cr_uid != de->de_uid) || uid != de->de_uid || - (gid != de->de_gid && !groupmember(gid, ap->a_cred))) { + if (ap->a_cred != NOCRED && + (ap->a_cred->cr_uid != de->de_uid || uid != de->de_uid || + (gid != de->de_gid && !groupmember(gid, ap->a_cred)))) { error = priv_check(ap->a_td, PRIV_VFS_CHOWN); if (error) return (error); @@ -1277,7 +1277,7 @@ devfs_setattr(struct vop_setattr_args *ap) } if (vap->va_mode != (mode_t)VNOVAL) { - if (ap->a_cred->cr_uid != de->de_uid) { + if (ap->a_cred != NOCRED && ap->a_cred->cr_uid != de->de_uid) { error = priv_check(ap->a_td, PRIV_VFS_ADMIN); if (error) return (error); |