From nobody Sat Jun 28 06:50:57 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4bTjk95xydz5ybgw; Sat, 28 Jun 2025 06:50:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bTjk92PpJz46M5; Sat, 28 Jun 2025 06:50:57 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751093457; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6DPZ9SLdZm/JRyb6wVkGuL5yXu38b7gbzMYLZIdWHrY=; b=Gi0/u4eF5AwzL8VNbWnauvhniadXaW627BRMn2Mh3dv75dth8i4a8ADrX9/vOWuE5lPOiW Y89wDaVP4CsfGxC6AEf8U9tXrZLhdnfxoetTtEqoSsJ4DUYMTPPVlwKqcDccg6cQqtLnAL VTRosALXrr7XafOQNyr9nREU0N6WjFZGUrsM0DNgVEwD1T3uSHArO2ca8S9qAWpbazEJc2 bZSdsljUCdtoNdDaTEAXJdkxC3pNSXV7hatBSGIQK+QDfFzUpwx/GpTF+wJ6eLzSUW+Kam S27XUpf86Tq51yGPnyh1lpDLJ1RI2mf6F5aaQZfBK/VOzMF+r7BnYelTC9Hu6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1751093457; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6DPZ9SLdZm/JRyb6wVkGuL5yXu38b7gbzMYLZIdWHrY=; b=cIqrlHkEbGtmuhU+HBaGZCY+6jOYqhDQiSFvGFI98mM/4k65kORqQ2F+kPwdwlgX97aKOZ jTyz2v/NEcfyklxH0uQEfg3iNtyXyGGtAl3eIINGgmdF/JbDfWzw1PT1CjQz8DFE2/FJwy o5NmJiYIcS6SoOWULPsdL7E6TWrrQiuJTpAa9MwjGCA6W/iPPTr0tr1fTE9V0/enKqjdCr 0Tmx9IrmaNqwizSgrLEhjpng7MkQV/Hsv80AArVTftVEy11POYsu9TTXUr1Zt5c+Srb5kY 6cqklaeGWjejWr44PREuT22vnqwRXX9xQ3cojEac70aEgfcMp30wfT/9HRXb2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1751093457; a=rsa-sha256; cv=none; b=p0wDM2lgJKE3wb9vfpTFjWKUgCUXQM2mbj+SGs2PoyCSfr0kpuhokfFyZ08NZ8FxE9dsBk LpMcHLlfiVEfnFWz0lCpTmp+ya5AZ9K2S0lmvAuqqS6/fMA2UuI1oFyQwo0U21fIWQaQYv mJoz1a3BWWZHy1otA0DtMIa1+sf+p6mgIe0i+h3DxSRU20qsV86Agt2YyKWy8vJjqO5zp7 lvNmxvjCQ978FD5+UB6ZvJfZgKk7qxCrHr5X+Vc45O4OLQvWrRSkOfhYQaBlIzWd/38Ght kPK35EvGAGS7fr3B2+Vpcl+M7XE0Ewc2LgNcZ9ApkjLw1HET9t1SXqTTwLDPlQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4bTjk91sXKz7W4; Sat, 28 Jun 2025 06:50:57 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 55S6ovPm010046; Sat, 28 Jun 2025 06:50:57 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55S6ovW4010043; Sat, 28 Jun 2025 06:50:57 GMT (envelope-from git) Date: Sat, 28 Jun 2025 06:50:57 GMT Message-Id: <202506280650.55S6ovW4010043@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Doug Moore Subject: git: 3a33e39edd48 - main - pctrie: correct iter node after node allocation List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dougm X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 3a33e39edd4828cb81767acfe2d41306d8bdedf2 Auto-Submitted: auto-generated The branch main has been updated by dougm: URL: https://cgit.FreeBSD.org/src/commit/?id=3a33e39edd4828cb81767acfe2d41306d8bdedf2 commit 3a33e39edd4828cb81767acfe2d41306d8bdedf2 Author: Doug Moore AuthorDate: 2025-06-28 06:49:38 +0000 Commit: Doug Moore CommitDate: 2025-06-28 06:49:38 +0000 pctrie: correct iter node after node allocation Usually, a pctrie_iter operation leaves the iterator node pointing to the last pctrie_node on the path to the found, or inserted, or removed leaf. However, that is not the case when inserting a leaf causes the allocation of a new pctrie node. In that case, the iterator node is left pointing to the parent of the allocated node, and not to the newly allocated node itself, the parent of the just-inserted leaf. Correct this anomaly. Reviewed by: markj, kib, alc Differential Revision: https://reviews.freebsd.org/D51059 --- sys/sys/pctrie.h | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sys/sys/pctrie.h b/sys/sys/pctrie.h index 3ff11f2c79ae..6307ffb3b88c 100644 --- a/sys/sys/pctrie.h +++ b/sys/sys/pctrie.h @@ -130,7 +130,7 @@ name##_PCTRIE_PTR2VAL(struct type *ptr) \ \ static __inline __unused int \ name##_PCTRIE_INSERT_BASE(struct pctrie *ptree, uint64_t *val, \ - struct pctrie_node *parent, void *parentp, \ + struct pctrie_node **parent, void *parentp, \ uint64_t *found, struct type **found_out) \ { \ struct pctrie_node *child; \ @@ -146,7 +146,8 @@ name##_PCTRIE_INSERT_BASE(struct pctrie *ptree, uint64_t *val, \ *found_out = NULL; \ return (ENOMEM); \ } \ - pctrie_insert_node(val, parent, parentp, child); \ + pctrie_insert_node(val, *parent, parentp, child); \ + *parent = child; \ } \ return (0); \ } \ @@ -159,7 +160,7 @@ name##_PCTRIE_INSERT(struct pctrie *ptree, struct type *ptr) \ uint64_t *val = name##_PCTRIE_PTR2VAL(ptr); \ \ parentp = pctrie_insert_lookup_strict(ptree, val, &parent); \ - return (name##_PCTRIE_INSERT_BASE(ptree, val, parent, parentp, \ + return (name##_PCTRIE_INSERT_BASE(ptree, val, &parent, parentp, \ NULL, NULL)); \ } \ \ @@ -173,7 +174,7 @@ name##_PCTRIE_FIND_OR_INSERT(struct pctrie *ptree, struct type *ptr, \ uint64_t *found; \ \ parentp = pctrie_insert_lookup(ptree, val, &parent, &found); \ - return (name##_PCTRIE_INSERT_BASE(ptree, val, parent, parentp, \ + return (name##_PCTRIE_INSERT_BASE(ptree, val, &parent, parentp, \ found, found_out_opt)); \ } \ \ @@ -188,7 +189,7 @@ name##_PCTRIE_INSERT_LOOKUP_LE(struct pctrie *ptree, struct type *ptr, \ int retval; \ \ parentp = pctrie_insert_lookup(ptree, val, &parent, &found); \ - retval = name##_PCTRIE_INSERT_BASE(ptree, val, parent, parentp, \ + retval = name##_PCTRIE_INSERT_BASE(ptree, val, &parent, parentp, \ found, found_out); \ if (retval != 0) \ return (retval); \ @@ -204,7 +205,7 @@ name##_PCTRIE_ITER_INSERT(struct pctrie_iter *it, struct type *ptr) \ uint64_t *val = name##_PCTRIE_PTR2VAL(ptr); \ \ parentp = pctrie_iter_insert_lookup(it, val); \ - return (name##_PCTRIE_INSERT_BASE(it->ptree, val, it->node, \ + return (name##_PCTRIE_INSERT_BASE(it->ptree, val, &it->node, \ parentp, NULL, NULL)); \ } \ \