Date: Tue, 27 Sep 2022 17:24:22 GMT From: Doug Moore <dougm@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: ed5183455e46 - main - register_oid: fix duplicate oid after d3f96f661050 Message-ID: <202209271724.28RHOMWm075714@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=ed5183455e4667ab92ff6f9d20cacaddb0a28909 commit ed5183455e4667ab92ff6f9d20cacaddb0a28909 Author: Doug Moore <dougm@FreeBSD.org> AuthorDate: 2022-09-27 17:13:50 +0000 Commit: Doug Moore <dougm@FreeBSD.org> CommitDate: 2022-09-27 17:24:01 +0000 register_oid: fix duplicate oid after d3f96f661050 sysctl_register_oid must check the uniqueness of any newly computed oid_number in sysctl_register_oid. Reviewed by: asomers MFC with: d3f96f661050 Differential Revision: https://reviews.freebsd.org/D36743 --- sys/kern/kern_sysctl.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sys/kern/kern_sysctl.c b/sys/kern/kern_sysctl.c index 1a3fcbbf8ae0..a31c8f97daa1 100644 --- a/sys/kern/kern_sysctl.c +++ b/sys/kern/kern_sysctl.c @@ -479,10 +479,9 @@ sysctl_register_oid(struct sysctl_oid *oidp) /* * Insert the OID into the parent's list sorted by OID number. */ -retry: key.oid_number = oid_number; - p = RB_FIND(sysctl_oid_list, parent, &key); - if (p) { + p = RB_NFIND(sysctl_oid_list, parent, &key); + while (p != NULL && oid_number == p->oid_number) { /* get the next valid OID number */ if (oid_number < CTL_AUTO_START || oid_number == 0x7fffffff) { @@ -491,10 +490,12 @@ retry: /* don't loop forever */ if (!timeout--) panic("sysctl: Out of OID numbers\n"); - goto retry; - } else { - oid_number++; + key.oid_number = oid_number; + p = RB_NFIND(sysctl_oid_list, parent, &key); + continue; } + p = RB_NEXT(sysctl_oid_list, NULL, p); + oid_number++; } /* check for non-auto OID number collision */ if (oidp->oid_number >= 0 && oidp->oid_number < CTL_AUTO_START &&
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202209271724.28RHOMWm075714>