From nobody Thu Apr 30 09:53:20 2026 X-Original-To: dev-commits-src-all@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 4g5qHP0p0fz6bWGp for ; Thu, 30 Apr 2026 09:53:21 +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 "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g5qHN6pt1z3DNK for ; Thu, 30 Apr 2026 09:53:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777542801; 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=iU2aj8ywLsZJySEjmMh61UIgI870ypBAeFavne2yZaU=; b=MyFXjBbGhohXf4UPtP7knq9Mx67JvmaXc+ZizVX6oiLFS7Jm9DbJzQNicRsihFG1/s3FEQ hUGTG+phjyRbEda4U2mQgVdj3WhNm4m+yQ9KSulvXwgCzC/iz8z0pgKVW538SLZEgsD2o4 Dsoh/UXMJr7XMP1wiVdcpRE9nUXzJe7f/fmjOhytepyn0Q68fm0DzFyu9vQRhqLaHgrbAj lT8z5JEhG1dOoLMRGFcNoCh2q4bPcCNUsAjiVdVf1KRby+yLDFXOLHcu8Z0HC+kGOvSs7q i3yVzfBzH9wfnDMdRWwQMKo0u5875mzMPhGx7rtbkYIgt9N06n80lfp0S8fsbw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777542801; a=rsa-sha256; cv=none; b=fqQqdTGui7l10cwM+Pc5E903cDdgw/5lnt1QTrovGHveSjyhQg/qK6dA8BXUVADFFcjPBZ nBPfZhVx2TZDjDNog3k6GBNG2bx5fUtAe+G6ciIodnj9A64C1xnj8Ijhk3nenpNUIYxa91 2rUxUbfCI9k3HkXAWBTGExfVKxjOPcDR/zdTSUtoLGO9QnHiv1wyZgfJXMCJgnVeXzyzws XiETehpB2HLmUX6OlRxlNU/L6SmIk+BtX03UP/YOka9Z8DXHzDtVKrwya4xhisqdAoplAk aWe5s/KcXxvCxsKR6XZrAfNQifIaxOFswqbOdAvctRkcuCDwcs7hJ1XbzYLB0g== 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=1777542801; 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=iU2aj8ywLsZJySEjmMh61UIgI870ypBAeFavne2yZaU=; b=gHvZyrHdZX+xCs5+ZYh931dqH4hyCXFKnfkGKS7mwAeaJtqV6O5tq+5GBW7y36bTJHKWkH SPBoLrpLqfYP/ERK0FghAM7Z1P3H/rFnfvmuIlRVGD5rA9Nw+Bt/hfSet627cSxU4uI3Uu NdOsEuuXSyWYzDSpRMw31OvJQNB3M+v8rEE0/DpdCZ520VzU1XKEDU95lVRZH8kKt9MRBu J79Yv3XnnYA3tHb/qXKkDSd5WHvWAyigXHmTvRQk8HwJkPDbydU0W79pewy8Zf8vP/xl/a f35lK5pOLF8IR2X8iJXf+8CEP86PjCs6IEtzBPpJZ86PHttLxJGYA4cvP7BxZg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g5qHN6Fbhz1LcV for ; Thu, 30 Apr 2026 09:53:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 45b4d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 30 Apr 2026 09:53:20 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Zhenlei Huang Subject: git: 877fa4f2a2d3 - stable/15 - ifnet: Add some sanity checks List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: zlei X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 877fa4f2a2d37dcd9e828d12dc9736c5e83ffd8c Auto-Submitted: auto-generated Date: Thu, 30 Apr 2026 09:53:20 +0000 Message-Id: <69f32690.45b4d.622978c5@gitrepo.freebsd.org> The branch stable/15 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=877fa4f2a2d37dcd9e828d12dc9736c5e83ffd8c commit 877fa4f2a2d37dcd9e828d12dc9736c5e83ffd8c Author: Zhenlei Huang AuthorDate: 2026-04-07 04:33:05 +0000 Commit: Zhenlei Huang CommitDate: 2026-04-30 09:51:59 +0000 ifnet: Add some sanity checks To be more robust since the checking is now performed where the interface is referenced. While here, remove a redundant check from if_vmove_loan(). Reviewed by: kp, glebius, pouria MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D55875 (cherry picked from commit 00d96da231d007673a1672452748d8ea4f6788ae) --- sys/net/if.c | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/sys/net/if.c b/sys/net/if.c index aeb264f2ac3f..75ef79738010 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -438,8 +438,12 @@ VNET_SYSINIT(vnet_if_init, SI_SUB_INIT_IF, SI_ORDER_SECOND, vnet_if_init, static void if_link_ifnet(struct ifnet *ifp) { - IFNET_WLOCK(); + + MPASS(refcount_load(&ifp->if_refcount) > 0); + MPASS(ifp->if_vnet == curvnet); + MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp); + CK_STAILQ_INSERT_TAIL(&V_ifnet, ifp, if_link); #ifdef VIMAGE curvnet->vnet_ifcnt++; @@ -456,6 +460,10 @@ if_unlink_ifnet(struct ifnet *ifp, bool vmove) IFNET_WLOCK(); CK_STAILQ_FOREACH(iter, &V_ifnet, if_link) if (iter == ifp) { + MPASS(refcount_load(&ifp->if_refcount) > 0); + MPASS(ifp->if_vnet == curvnet); + MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp); + CK_STAILQ_REMOVE(&V_ifnet, ifp, ifnet, if_link); #ifdef VIMAGE curvnet->vnet_ifcnt--; @@ -1298,8 +1306,6 @@ if_vmove_loan(struct thread *td, struct ifnet *ifp, char *ifname, int jid) struct ifnet *difp; bool found; - MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp); - /* Try to find the prison within our visibility. */ sx_slock(&allprison_lock); pr = prison_find_child(td->td_ucred->cr_prison, jid); @@ -2222,14 +2228,13 @@ ifunit_ref(const char *name) NET_EPOCH_ENTER(et); CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0 && - !(ifp->if_flags & IFF_DYING)) + !(ifp->if_flags & IFF_DYING)) { + MPASS(ifp->if_vnet == curvnet); + MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp); + if_ref(ifp); break; + } } - if (ifp != NULL) { - if_ref(ifp); - MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp); - } - NET_EPOCH_EXIT(et); return (ifp); } @@ -2242,8 +2247,12 @@ ifunit(const char *name) NET_EPOCH_ENTER(et); CK_STAILQ_FOREACH(ifp, &V_ifnet, if_link) { - if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0) + if (strncmp(name, ifp->if_xname, IFNAMSIZ) == 0) { + MPASS(refcount_load(&ifp->if_refcount) > 0); + MPASS(ifp->if_vnet == curvnet); + MPASS(ifindex_table[ifp->if_index].ife_ifnet == ifp); break; + } } NET_EPOCH_EXIT(et); return (ifp);