From nobody Mon May 4 16:51:14 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 4g8SMk6CqDz6brK5 for ; Mon, 04 May 2026 16:51:14 +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 4g8SMk4FhHz3w4g for ; Mon, 04 May 2026 16:51:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777913474; 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=n7fcwoFsfi5v0pUKBV87M+iozR2uy+TvJnaLso/UtQk=; b=thGTD2DyjBrS0UO7bm8qZC2hu/DpOUHdlvODsVJxCw5rP7mndFu7DSRgIABeKaOM0RKIno 3u7RupZ1t2fsujHLECXBsD5D3Y6scDp1wgj1cvubBYANh2Yk0ITNJwRdkqJaXyzQ3L95h+ HlpKA4tjEtlZQ3Yu4x8UmdBNwTDcuOZ+My4CO341Q2BUxne5ykng451lKTx1fl1am4BSJW m0SUvwpPws1wDFDXZ5AWj7hcpdnEh3ufwIncGLyloF3Vb37F42xLagCPLNOnkYUlerVmWJ 37cOusTONO0TbFWT5kJK75kDlPikNmkgjLjmn6g5S57SucalVBWkAQxG5Luw5Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777913474; a=rsa-sha256; cv=none; b=ritokJUCcoMfvw7pRzQdItcuWaixzzNE9IUtGk8M7JbVZfbc5I6a43tVTLlWHimKUWm49T 8XfmkpICFgh1wNc5pyQBA6QpH4n6ygyZjCJlgpYSwWGzTkL8Izldu70/rMRTwUiKzThBoH QlsrZxsPByOkLpKXXZMQiJbe0m67OmDVDnOjUrsK+w8SGbAORoqbrUdNsj/WhgWhQPiz6z HRe2hcmWYA/YHQIPZJ87zCkZBZtNbjlAW2VZrJKx2B8B/y/v5t/bEKVMrA8GceDGc7XwjX s7HEhNMGIyIdSCDVH62deXRsRfJCa9nnlojbS6uRvPBhlMmBpRp45EVbAEHT5g== 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=1777913474; 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=n7fcwoFsfi5v0pUKBV87M+iozR2uy+TvJnaLso/UtQk=; b=N/ah3e331dbjIxbimM7pKnsg6qdF29wuMrxiJj0Qk4IZ3xmACRUyLEQ5vvYNA83Wlcc1mT unDVf8eoZ8zb2pl4aB4TjcSS+D8HnQ77bZL3J7gC6DxFMYywV8V8r1HvgQnQT9tnT164/a 4U5EyxjXIzc+eZKHpWtg3NDExa4c7PYhwtg+1AIsrp/9zX9Uzs79tqrvZa+ZFId/2ZH6sd GZxzHVo84ad/PGkHuPm8oukIwZAIcxL7bj1UqNykdsSOjBBhoHzBGZshdGeg0BAg5tw/ex JJ9y3YeoOMssQOkYTt5xMDppps5RFo/Er0cDZOlr5UfWPR/TEpOpwTEQxAxLQA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g8SMk3ZlxzCrQ for ; Mon, 04 May 2026 16:51:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 24acc by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Mon, 04 May 2026 16:51:14 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Zhenlei Huang Subject: git: b1dc0bc2cc86 - stable/14 - 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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/14 X-Git-Reftype: branch X-Git-Commit: b1dc0bc2cc8658992bed0c0a3148f6a9c67eef8b Auto-Submitted: auto-generated Date: Mon, 04 May 2026 16:51:14 +0000 Message-Id: <69f8ce82.24acc.28c04d9f@gitrepo.freebsd.org> The branch stable/14 has been updated by zlei: URL: https://cgit.FreeBSD.org/src/commit/?id=b1dc0bc2cc8658992bed0c0a3148f6a9c67eef8b commit b1dc0bc2cc8658992bed0c0a3148f6a9c67eef8b Author: Zhenlei Huang AuthorDate: 2026-04-07 04:33:05 +0000 Commit: Zhenlei Huang CommitDate: 2026-05-04 16:49:40 +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) (cherry picked from commit 877fa4f2a2d37dcd9e828d12dc9736c5e83ffd8c) --- 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 55c81b7c931b..1d6b2f7b9461 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -440,8 +440,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++; @@ -458,6 +462,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--; @@ -1302,8 +1310,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);