summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sysctl.c
diff options
context:
space:
mode:
authormckusick <mckusick@FreeBSD.org>2001-01-24 04:35:13 +0000
committermckusick <mckusick@FreeBSD.org>2001-01-24 04:35:13 +0000
commit28dc76bebe291133509d8dcd8d61ea79f62a4185 (patch)
treec4e3020428d9aae3e168be62dea161c89ab3e76a /sys/kern/kern_sysctl.c
parent810630fa417a1146f3a2ce06eba740de26d6981d (diff)
downloadFreeBSD-src-28dc76bebe291133509d8dcd8d61ea79f62a4185.zip
FreeBSD-src-28dc76bebe291133509d8dcd8d61ea79f62a4185.tar.gz
Never reuse AUTO_OID values.
Approved by: Alfred Perlstein <bright@wintelcom.net>
Diffstat (limited to 'sys/kern/kern_sysctl.c')
-rw-r--r--sys/kern/kern_sysctl.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c
index e9e9cd8..d2e4dc2 100644
--- a/sys/kern/kern_sysctl.c
+++ b/sys/kern/kern_sysctl.c
@@ -114,13 +114,11 @@ void sysctl_register_oid(struct sysctl_oid *oidp)
* 100 to leave space for pre-assigned oid numbers.
*/
if (oidp->oid_number == OID_AUTO) {
- /* First, find the highest oid in the parent list >99 */
- n = 99;
- SLIST_FOREACH(p, parent, oid_link) {
- if (p->oid_number > n)
- n = p->oid_number;
- }
- oidp->oid_number = n + 1;
+ static int newoid = 100;
+
+ oidp->oid_number = newoid++;
+ if (newoid == 0x7fffffff)
+ panic("out of oids");
}
/*
OpenPOWER on IntegriCloud