From nobody Tue Apr 7 04:34:21 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 4fqYJ30WL4z6Yhdx for ; Tue, 07 Apr 2026 04:34:27 +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 4fqYJ27348z3bh1 for ; Tue, 07 Apr 2026 04:34:26 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775536467; 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=UdowtmInuvP3iV/WgIX/KlVjOT1b+qbBI3SzyQkFy96WtnnSwEGmLDVYCr2swv/Nde8OGQ 5RMwCvConVhSzwh6yen09u3kW6OUFZXgqqDk8wdurbN/XfS77PFi7e7J92ylxuxFQ+nBdn DB1NxV/7GFZIY2SJtIndPq03xJUA6IJq5MCfv0SfISc77Mh6GppEHNJtpL9i1nf505wZMG /HeLK7yTEmFDewK4fNXPYxBUGn8zHx3gNkLC57pbw1x8Gc0HGPjYx5znWa2YKMthFj/Xhu QGOhB1XStB6wL3U8EAu+RYR4AA7ZjDPsyXxLayuDL9AeUjd2jev/6xuIsPKqzA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775536467; a=rsa-sha256; cv=none; b=YgMOYI/ZJBXXT2zFMLKeQ91XXQkSyBvsrATHwq+CAJCihQ5Xi+zgqFDVbL1aThdwPg8YnZ mmCpIPjZ/+5RSpPjo8XyXZ+Ytdx+AMhiFbOvToc3Vi/B2qFgOi/UanPN3/VgiGHmSohQW4 bJHgQjxDg5a6XuFSc1EP5j+bJEPds3OEemw3vUOOeKtipHLBcx5x2j1qf+EXk1XwB5Tbfx BhlRXNb1wT1jxI5jzXSzH7lqjuuKJwruwX93NrWo9g3lrO2J8T00WAgrptQebaC0daJyYl Kdk1HId/7eGiF1nmx41hoYk+99epyeRJjdnMMxf7g5ak8ExqiN7RBAhLveb6Kg== 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=1775536467; 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=tKQmN3W6oeWGgTJ9snFHFsfAi7PGbRS2AwIBysHuUxZB51FiFo5/RHuQN+edAd4hXHU4sV hbz6KDYhn72ScOqe5dMkZkhrn3/ATAZn3O9+LDhEOy4mezz70N4jMNVOGtJ5+P8x2AqGux n2DpymDS3GoYCfUdthqwtW4Uf4MOoNL+EMb08K2p93ndv22VYNQqKuFK+lDhyXE9BxA3Rv lCvVx/PyTLE1zKurbskNHzEyj32D5ZqdoRar7Daf00Hk+RYwpXbmY0TbUbpTGWmbHO2pq7 a84hTSQ3aMEN+M5F4bGMcajbyIUEMCCrHjz7zZfTblOuRkZfBktsjB2RMmtu/g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fqYJ26BbYz8Vk for ; Tue, 07 Apr 2026 04:34:26 +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 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/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);