summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/fs/devfs/devfs_vnops.c12
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);
OpenPOWER on IntegriCloud