summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_conf.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-02-27 15:17:37 +0000
committerphk <phk@FreeBSD.org>2003-02-27 15:17:37 +0000
commit6afed802017b091b867fb79fe8ea4c732b68a26d (patch)
treef8d2962f181ee77465f35e4e6a8e93152c123b00 /sys/kern/kern_conf.c
parentf3d3aadd6f8b534ca308dd6836d0699ec3b3fe53 (diff)
downloadFreeBSD-src-6afed802017b091b867fb79fe8ea4c732b68a26d.zip
FreeBSD-src-6afed802017b091b867fb79fe8ea4c732b68a26d.tar.gz
Add the flip-side check: If a driver wants a particular major#, make
sure it is marked as allocated in reserved_majors[]. Whine if it wasn't.
Diffstat (limited to 'sys/kern/kern_conf.c')
-rw-r--r--sys/kern/kern_conf.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/kern/kern_conf.c b/sys/kern/kern_conf.c
index d1b4d86..f0a13c1 100644
--- a/sys/kern/kern_conf.c
+++ b/sys/kern/kern_conf.c
@@ -295,6 +295,15 @@ make_dev(struct cdevsw *devsw, int minor, uid_t uid, gid_t gid, int perms, const
printf("Allocating major#%d to \"%s\"\n", i, devsw->d_name);
devsw->d_maj = i;
reserved_majors[i] = i;
+ } else {
+ KASSERT(devsw->d_maj >= 0 && devsw->d_maj < 256,
+ ("Invalid major (%d) in make_dev", devsw->d_maj));
+ if (reserved_majors[devsw->d_maj] != devsw->d_maj) {
+ printf("WARNING: driver \"%s\" used %s %d\n",
+ devsw->d_name, "unreserved major device number",
+ devsw->d_maj);
+ reserved_majors[devsw->d_maj] = devsw->d_maj;
+ }
}
if (!ready_for_devs) {
OpenPOWER on IntegriCloud