diff options
author | mckusick <mckusick@FreeBSD.org> | 2001-01-24 04:35:13 +0000 |
---|---|---|
committer | mckusick <mckusick@FreeBSD.org> | 2001-01-24 04:35:13 +0000 |
commit | 28dc76bebe291133509d8dcd8d61ea79f62a4185 (patch) | |
tree | c4e3020428d9aae3e168be62dea161c89ab3e76a | |
parent | 810630fa417a1146f3a2ce06eba740de26d6981d (diff) | |
download | FreeBSD-src-28dc76bebe291133509d8dcd8d61ea79f62a4185.zip FreeBSD-src-28dc76bebe291133509d8dcd8d61ea79f62a4185.tar.gz |
Never reuse AUTO_OID values.
Approved by: Alfred Perlstein <bright@wintelcom.net>
-rw-r--r-- | sys/kern/kern_sysctl.c | 12 |
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"); } /* |