diff options
Diffstat (limited to 'sys/fs/devfs')
-rw-r--r-- | sys/fs/devfs/devfs_devs.c | 10 | ||||
-rw-r--r-- | sys/fs/devfs/devfs_vnops.c | 9 |
2 files changed, 10 insertions, 9 deletions
diff --git a/sys/fs/devfs/devfs_devs.c b/sys/fs/devfs/devfs_devs.c index db879efe803a..124f9f0449af 100644 --- a/sys/fs/devfs/devfs_devs.c +++ b/sys/fs/devfs/devfs_devs.c @@ -86,6 +86,9 @@ sysctl_devname(SYSCTL_HANDLER_ARGS) struct cdev_priv *cdp; struct cdev *dev; + if (req->newptr == NULL) + return (EINVAL); + #ifdef COMPAT_FREEBSD11 if (req->newlen == sizeof(ud_compat)) { error = SYSCTL_IN(req, &ud_compat, sizeof(ud_compat)); @@ -118,11 +121,8 @@ SYSCTL_PROC(_kern, OID_AUTO, devname, CTLTYPE_OPAQUE|CTLFLAG_RW|CTLFLAG_ANYBODY|CTLFLAG_MPSAFE, NULL, 0, sysctl_devname, "", "devname(3) handler"); -SYSCTL_INT(_debug_sizeof, OID_AUTO, cdev, CTLFLAG_RD, - SYSCTL_NULL_INT_PTR, sizeof(struct cdev), "sizeof(struct cdev)"); - -SYSCTL_INT(_debug_sizeof, OID_AUTO, cdev_priv, CTLFLAG_RD, - SYSCTL_NULL_INT_PTR, sizeof(struct cdev_priv), "sizeof(struct cdev_priv)"); +SYSCTL_SIZEOF_STRUCT(cdev); +SYSCTL_SIZEOF_STRUCT(cdev_priv); struct cdev * devfs_alloc(int flags) diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c index a35f6dbf9520..1d744e6593c0 100644 --- a/sys/fs/devfs/devfs_vnops.c +++ b/sys/fs/devfs/devfs_vnops.c @@ -66,7 +66,7 @@ static struct vop_vector devfs_vnodeops; static struct vop_vector devfs_specops; -static struct fileops devfs_ops_f; +static const struct fileops devfs_ops_f; #include <fs/devfs/devfs.h> #include <fs/devfs/devfs_int.h> @@ -555,8 +555,7 @@ loop: if (devfs_allocv_drop_refs(0, dmp, de)) { vput(vp); return (ENOENT); - } - else if (VN_IS_DOOMED(vp)) { + } else if (VN_IS_DOOMED(vp)) { mtx_lock(&devfs_de_interlock); if (de->de_vnode == vp) { de->de_vnode = NULL; @@ -1516,6 +1515,8 @@ devfs_readdir(struct vop_readdir_args *ap) */ if (tmp_ncookies != NULL) ap->a_ncookies = tmp_ncookies; + if (dd == NULL && error == 0 && ap->a_eofflag != NULL) + *ap->a_eofflag = 1; return (error); } @@ -2038,7 +2039,7 @@ devfs_cmp_f(struct file *fp1, struct file *fp2, struct thread *td) return (kcmp_cmp((uintptr_t)fp1->f_data, (uintptr_t)fp2->f_data)); } -static struct fileops devfs_ops_f = { +static const struct fileops devfs_ops_f = { .fo_read = devfs_read_f, .fo_write = devfs_write_f, .fo_truncate = devfs_truncate_f, |