Hi,
sysctl witnesswatch gives an error message if the feature is not
compiled into the kernel. I think dt(4) allowdt should do the same.
sysctl: kern.allowdt: value is not available
This removes a bit of unused code from ramdisk kernel.
The variable allowdt should be in the device, not in sysctl source.
We don't need #ifdef for extern and prototypes, without it code is
more readable.
Put the unneeded sysctl code into an #if NDT > 0.
ok?
By the way, can we enable dt(4) in GENERIC? I use it quite often
and it is handy to have it is avaiable. Missuse is prevented by
securelevel sysctl. Any downside?
bluhm
Index: dev/dt/dt_dev.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/dev/dt/dt_dev.c,v
retrieving revision 1.12
diff -u -p -r1.12 dt_dev.c
--- dev/dt/dt_dev.c 26 Mar 2021 21:17:10 -0000 1.12
+++ dev/dt/dt_dev.c 22 Apr 2021 17:38:22 -0000
@@ -109,6 +109,8 @@ SIMPLEQ_HEAD(, dt_probe) dt_probe_list;
struct rwlock dt_lock = RWLOCK_INITIALIZER("dtlk");
volatile uint32_t dt_tracing = 0; /* [K] # of processes tracing */
+int allowdt;
+
void dtattach(struct device *, struct device *, void *);
int dtopen(dev_t, int, int, struct proc *);
int dtclose(dev_t, int, int, struct proc *);
@@ -145,7 +147,6 @@ dtopen(dev_t dev, int flags, int mode, s
{
struct dt_softc *sc;
int unit = minor(dev);
- extern int allowdt;
if (!allowdt)
return EPERM;
Index: kern/kern_sysctl.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/kern/kern_sysctl.c,v
retrieving revision 1.389
diff -u -p -r1.389 kern_sysctl.c
--- kern/kern_sysctl.c 8 Feb 2021 10:51:02 -0000 1.389
+++ kern/kern_sysctl.c 22 Apr 2021 17:38:22 -0000
@@ -114,24 +114,21 @@
#endif
#include "audio.h"
-#include "video.h"
+#include "dt.h"
#include "pf.h"
+#include "video.h"
extern struct forkstat forkstat;
extern struct nchstats nchstats;
extern int nselcoll, fscale;
extern struct disklist_head disklist;
extern fixpt_t ccpu;
-extern long numvnodes;
-#if NAUDIO > 0
+extern long numvnodes;
+extern int allowdt;
extern int audio_record_enable;
-#endif
-#if NVIDEO > 0
extern int video_record_enable;
-#endif
int allowkmem;
-int allowdt;
int sysctl_diskinit(int, struct proc *);
int sysctl_proc_args(int *, u_int, void *, size_t *, struct proc *);
@@ -142,12 +139,8 @@ int sysctl_proc_vmmap(int *, u_int, void
int sysctl_intrcnt(int *, u_int, void *, size_t *);
int sysctl_sensors(int *, u_int, void *, size_t *, void *, size_t);
int sysctl_cptime2(int *, u_int, void *, size_t *, void *, size_t);
-#if NAUDIO > 0
int sysctl_audio(int *, u_int, void *, size_t *, void *, size_t);
-#endif
-#if NVIDEO > 0
int sysctl_video(int *, u_int, void *, size_t *, void *, size_t);
-#endif
int sysctl_cpustats(int *, u_int, void *, size_t *, void *, size_t);
int sysctl_utc_offset(void *, size_t *, void *, size_t);
@@ -479,10 +472,12 @@ kern_sysctl(int *name, u_int namelen, vo
return (EPERM);
securelevel = level;
return (0);
+#if NDT > 0
case KERN_ALLOWDT:
if (securelevel > 0)
return (sysctl_rdint(oldp, oldlenp, newp, allowdt));
return (sysctl_int(oldp, oldlenp, newp, newlen, &allowdt));
+#endif
case KERN_ALLOWKMEM:
if (securelevel > 0)
return (sysctl_rdint(oldp, oldlenp, newp, allowkmem));