From nobody Tue Mar 31 15:58:53 2026 X-Original-To: dev-commits-src-branches@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 4flXqB6cHqz6WFHc for ; Tue, 31 Mar 2026 15:59:02 +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 "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4flXq20ZW2z3gsy for ; Tue, 31 Mar 2026 15:58:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972734; 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=DLWm6YBFebXnRdLkX5gmtsJCYJakRn9j+POl76PijE0=; b=FbYOJmJjH/MAmlPrtzwahP5RDDAP3pZ5yQ6u03jbn7Ko+COwgwDJKItnQCdYRXk0yFwan9 NxPcTUW+T779/qZP8mU05geK6t8ENIqAFxJVPqqH27AyVq54JyPm0eF1c2xV1GU0e+Pev2 gsCJY9ShkYmwkXjF4Yr4CldmjQe0I4+sPI1UxFD0APJclAOzPhDYqgY6QC0IzOxxzdgq3W FLgFDuNPPdKKVn44Z/o4+ct/kSRjGU8B+Ym5sR9GhDExBXnfIUNLK0lkJ5C2M5ATECSLpN OjlPVaKzlDGv9LA4+GgFRVl7+1uyuuNP6bllhLW9hUHTI7Aa2iKBCGWyuvh44g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1774972734; a=rsa-sha256; cv=none; b=cxShgNUVv6D4sCDWbPrmckf21w7oaX6Mcn4j9ndV5xTFkPWT6N2qu3D7EF1/VS6z0hjhqV M02G+iJve7rqqSPatrHprsrxds34ReCvmCnLVXtCm5BlOmtru4Z3a448gK4YSGJ8tRu7LH FcG2wtt5Ud4jv+y9is6rraj6ba+gdXmxljXFU59cX4hprGRjzsU0vD/X2Kcs9zCxpCO044 bh7SDrpTmI8JYX280qQOz7kQ05+QlZjZFwM+CW0DhehR/KzuAUcO14lavyPcHHIJkt5Bxm 5HgluqcXbb+Tpudm1cTRwE0lgDmg8vtw5wcja2221C8mCxhQh0jAxcDNFy0rLg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1774972734; 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=DLWm6YBFebXnRdLkX5gmtsJCYJakRn9j+POl76PijE0=; b=lBNHnOah/2Gx5tsyGT4dnFm7AZlzsb1orGtTXPUZ6XSoq1EQBODxGH0OiINom9vTFrpe9+ bauQCNUoZi2R2DUzwK/AmC0krOoJtI9j5pj0JFtvGQj1qlWysmv7K6bMYTcE2Vwus6m+s7 BfBIx6Qo+2dhMdChA9cymJfMO6J3pEahgt2pCeGWRgreexBKJ04DX3YnQPqukWHUD2lTbP cdGf4hq9ifeH0j8TSZrc+O0NUdEvmmqsyGi+lsdOI71axAxuDAzTMloJ0LE0Rp1RPTqAIJ OqmpZm/kk5CqcCFcPbhuFj4hVz1vF6uHNWoc9PLKuufcSMkW9dAKvO9RzXtUSg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4flXq14fqXzcFb for ; Tue, 31 Mar 2026 15:58:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3a95e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 31 Mar 2026 15:58:53 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 421c44123f46 - stable/15 - ip6_mroute: Deindent some code in ip6_mdq() List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 421c44123f4680b5242ccdfa5c46fa6af5fe0bf9 Auto-Submitted: auto-generated Date: Tue, 31 Mar 2026 15:58:53 +0000 Message-Id: <69cbef3d.3a95e.68b2497a@gitrepo.freebsd.org> The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=421c44123f4680b5242ccdfa5c46fa6af5fe0bf9 commit 421c44123f4680b5242ccdfa5c46fa6af5fe0bf9 Author: Mark Johnston AuthorDate: 2026-02-09 22:52:20 +0000 Commit: Mark Johnston CommitDate: 2026-03-31 15:57:28 +0000 ip6_mroute: Deindent some code in ip6_mdq() Deal with the mifi >= nummifs case early so that we can de-indent the rest of the code. This also ensures that the debug log (compiled out by default) doesn't perform an out-of-bounds access. Remove a bogus NULL test in an inner loop while here. No functional change intended. Reviewed by: glebius MFC after: 2 weeks Sponsored by: Stormshield Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D55059 (cherry picked from commit d8f7a7b44a951368d637bbbdc06c28ffd6331d76) --- sys/netinet6/ip6_mroute.c | 134 +++++++++++++++++++++++----------------------- 1 file changed, 68 insertions(+), 66 deletions(-) diff --git a/sys/netinet6/ip6_mroute.c b/sys/netinet6/ip6_mroute.c index 7dd87a07340c..7c2bdfeaeaec 100644 --- a/sys/netinet6/ip6_mroute.c +++ b/sys/netinet6/ip6_mroute.c @@ -1363,96 +1363,98 @@ ip6_mdq(struct mbuf *m, struct ifnet *ifp, struct mf6c *rt) * for its origin. */ mifi = rt->mf6c_parent; - if ((mifi >= nummifs) || (mif6table[mifi].m6_ifp != ifp)) { - /* came in the wrong interface */ - MRT6_DLOG(DEBUG_FORWARD, - "wrong if: ifid %d mifi %d mififid %x", ifp->if_index, - mifi, mif6table[mifi].m6_ifp->if_index); + if (mifi >= nummifs || mif6table[mifi].m6_ifp != ifp) { MRT6STAT_INC(mrt6s_wrong_if); rt->mf6c_wrong_if++; + if (mifi >= nummifs) + return (0); + + mifp = &mif6table[mifi]; + MRT6_DLOG(DEBUG_FORWARD, + "wrong if: ifid %d mifi %d mififid %x", ifp->if_index, + mifi, mifp->m6_ifp->if_index); + /* * If we are doing PIM processing, and we are forwarding * packets on this interface, send a message to the * routing daemon. */ /* have to make sure this is a valid mif */ - if (mifi < nummifs && mif6table[mifi].m6_ifp) - if (V_pim6 && (m->m_flags & M_LOOP) == 0) { - /* - * Check the M_LOOP flag to avoid an - * unnecessary PIM assert. - * XXX: M_LOOP is an ad-hoc hack... - */ - static struct sockaddr_in6 sin6 = - { sizeof(sin6), AF_INET6 }; + if (mifp->m6_ifp && V_pim6 && (m->m_flags & M_LOOP) == 0) { + /* + * Check the M_LOOP flag to avoid an + * unnecessary PIM assert. + * XXX: M_LOOP is an ad-hoc hack... + */ + static struct sockaddr_in6 sin6 = + { sizeof(sin6), AF_INET6 }; - struct mbuf *mm; - struct mrt6msg *im; + struct mbuf *mm; + struct mrt6msg *im; #ifdef MRT6_OINIT - struct omrt6msg *oim; + struct omrt6msg *oim; #endif - mm = m_copym(m, 0, sizeof(struct ip6_hdr), - M_NOWAIT); - if (mm && - (!M_WRITABLE(mm) || - mm->m_len < sizeof(struct ip6_hdr))) - mm = m_pullup(mm, sizeof(struct ip6_hdr)); - if (mm == NULL) - return (ENOBUFS); + mm = m_copym(m, 0, sizeof(struct ip6_hdr), + M_NOWAIT); + if (mm && + (!M_WRITABLE(mm) || + mm->m_len < sizeof(struct ip6_hdr))) + mm = m_pullup(mm, sizeof(struct ip6_hdr)); + if (mm == NULL) + return (ENOBUFS); #ifdef MRT6_OINIT - oim = NULL; + oim = NULL; #endif - im = NULL; - switch (V_ip6_mrouter_ver) { + im = NULL; + switch (V_ip6_mrouter_ver) { #ifdef MRT6_OINIT - case MRT6_OINIT: - oim = mtod(mm, struct omrt6msg *); - oim->im6_msgtype = MRT6MSG_WRONGMIF; - oim->im6_mbz = 0; - break; + case MRT6_OINIT: + oim = mtod(mm, struct omrt6msg *); + oim->im6_msgtype = MRT6MSG_WRONGMIF; + oim->im6_mbz = 0; + break; #endif - case MRT6_INIT: - im = mtod(mm, struct mrt6msg *); - im->im6_msgtype = MRT6MSG_WRONGMIF; - im->im6_mbz = 0; - break; - default: - m_freem(mm); - return (EINVAL); - } + case MRT6_INIT: + im = mtod(mm, struct mrt6msg *); + im->im6_msgtype = MRT6MSG_WRONGMIF; + im->im6_mbz = 0; + break; + default: + m_freem(mm); + return (EINVAL); + } - for (mifp = mif6table, iif = 0; - iif < nummifs && mifp && - mifp->m6_ifp != ifp; - mifp++, iif++) - ; + for (mifp = mif6table, iif = 0; + iif < nummifs && mifp->m6_ifp != ifp; + mifp++, iif++) + ; - switch (V_ip6_mrouter_ver) { + switch (V_ip6_mrouter_ver) { #ifdef MRT6_OINIT - case MRT6_OINIT: - oim->im6_mif = iif; - sin6.sin6_addr = oim->im6_src; - break; + case MRT6_OINIT: + oim->im6_mif = iif; + sin6.sin6_addr = oim->im6_src; + break; #endif - case MRT6_INIT: - im->im6_mif = iif; - sin6.sin6_addr = im->im6_src; - break; - } + case MRT6_INIT: + im->im6_mif = iif; + sin6.sin6_addr = im->im6_src; + break; + } - MRT6STAT_INC(mrt6s_upcalls); + MRT6STAT_INC(mrt6s_upcalls); - if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { - MRT6_DLOG(DEBUG_ANY, - "ip6_mrouter socket queue full"); - MRT6STAT_INC(mrt6s_upq_sockfull); - return (ENOBUFS); - } /* if socket Q full */ - } /* if PIM */ + if (socket_send(V_ip6_mrouter, mm, &sin6) < 0) { + MRT6_DLOG(DEBUG_ANY, + "ip6_mrouter socket queue full"); + MRT6STAT_INC(mrt6s_upq_sockfull); + return (ENOBUFS); + } + } return (0); - } /* if wrong iif */ + } /* If I sourced this packet, it counts as output, else it was input. */ if (m->m_pkthdr.rcvif == NULL) {