aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/devfs
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/devfs')
-rw-r--r--sys/fs/devfs/devfs_devs.c10
-rw-r--r--sys/fs/devfs/devfs_vnops.c9
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,