From nobody Tue Apr 7 04:34:21 2026 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 4fqYHy0CcRz6Yhq7 for ; Tue, 07 Apr 2026 04:34:22 +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 4fqYHx6hY9z3bS1 for ; Tue, 07 Apr 2026 04:34:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775536461; 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=E+rwqFOMR1RHRP+xGhIvqIinOFd4WEtc9JH6yljcpa0=; b=FNaKbEylDgH4epE4U5jW9ABZzGJgegDZ1sd89tDPyiEcKmTB9w1dOL93NTl6B6CSEqu6x3 qCSfF8xjqN8b7+gcFbVdH5l4u/B8yP85RaL0bJ70fjUralEjlWWOFv1JYMR49pNamcNsT+ EOYKQPL1uDWA6NTBmSpIEETlE19WAY/ZJiKntGL7nfqAKhsiUnt1Ozx4/iQUXdlQ3o4UDu tZuUS8hY5RCn5m2pkrcToZ/HDt/yxqYllHU60Rex6JOFMiySlinRz29My0EBFUoT9OPR5T lqY+jxfAnX3wASBOA3XUZ6Sx7Te0GeZe60bAYvWGgLbhO+n4ak0dY2ZRrKw8VA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775536461; a=rsa-sha256; cv=none; b=rYVugt9RKlo/IrJb9Z6f71HPt4IMQgeXFK9b1Y9u38PTULGArXS/VVbBNNTPdaFYRxwcoG L2eeJz8peJzB7yRyDKX4PDrpYjS5vjFXLGM5xAUHdaQzsD//gJ8jzb4VPn5EmSOY9jMq/l ZuFHts6on4vIL4axFgC8r0FaaTbHMGZyM9uuYVWW/IidxwOCrzuYZ25nrDcGstTS4OCdxy XJb3vn96jrAHELTZqboN7o6GQdNvQt+ogviBlhrRRqRt3+XmzJbX54Uv9g4u4xluW70xMz wMiZbJ230MRmL46PaZdBCCrG5+EoKjX4/GhVuXIwL430vLRPo311WVqhNeSc1g== 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=1775536461; 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=E+rwqFOMR1RHRP+xGhIvqIinOFd4WEtc9JH6yljcpa0=; b=IWwlXoaH1hG98HRfmGFkpVgKF9AZ3RvT+NQs1mLuQiuX1kfDunBfAlsydFcEjxU48Bb4/p JXTzL3jXEDAL1YmJWRBsDocrQnS0N8+7amEn5XKWq378oGCvtp7as0QzeQyXIGwkwsFueW LkTIQyUi5X8R7nFiVk+bDIlP/Ncslk/oX+FMl2ZVhOeagWJDjkIPmTrYCpIbMth1Qnz+OC nkFLZSFD6bSfy/es5WK4okc7NqRSxIiJmv1ipKjkkaLWIky2PPUws4jIJHWhqk3NWs+QiM PuW3D834KkRcezr9ulj2DOPXMn/VVuns6KUMOmGF3xGkBVLxfdlE1L4yAiN2rg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fqYHx5wsLz8Qr for ; Tue, 07 Apr 2026 04:34:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1e05d by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 07 Apr 2026 04:34:21 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Zhenlei Huang Subject: git: 00d96da231d0 - main - ifnet: Add some sanity checks 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: zlei X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 00d96da231d007673a1672452748d8ea4f6788ae Auto-Submitted: auto-generated Date: Tue, 07 Apr 2026 04:34:21 +0000 Message-Id: <69d4894d.1e05d.df35661@gitrepo.freebsd.org> The branch main has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=00d96da231d007673a1672452748d8ea4f6788ae commit 00d96da231d007673a1672452748d8ea4f6788ae Author: Zhenlei Huang AuthorDate: 2026-04-07 04:33:05 +0000 Commit: Zhenlei Huang CommitDate: 2026-04-07 04:33:05 +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 --- 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 bdb5671c1afb..519b23750b52 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -428,8 +428,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++; @@ -446,6 +450,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--; @@ -1189,8 +1197,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); @@ -2109,14 +2115,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); } @@ -2129,8 +2134,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);