From nobody Tue Sep 19 14:29:40 2023 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 4RqkZX3LDTz4v0L2; Tue, 19 Sep 2023 14:29:40 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4RqkZX2VQfz4cLD; Tue, 19 Sep 2023 14:29:40 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1695133780; 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=o1UnpQId8sqEoKpAxksEx7B+uoj0td3qinn8KC2ZBB4=; b=aZnxXxL2YyTL9QhY1OvXlFcgm0GYfBiw73sKxEBHt9s8hTNRGlQfUehwnxmgtZg13CAaJ0 0Q9y3a7qjfAx5ihfS+AmSG4IXlfQ/QBlVuD14h/u5dRnPjZ2pZqhgRtT6USGwxy8DgiRQR 8502y/D9KSKunWIt5iNYYMhTS14IFAZYXaFTeYy85k43HNKK3hTxvR6wqCr2aXptDdK4Q5 3vyxx2PoHYqiQho1W+QuGv5j1jsAaMvsLbVvqI8sn9wVScvc/FnHWyT+Yr2Wd3LjWVGym8 2YLvRGXfP2HSVs3RjB89Zagg9rdNRnQGXNl9BwUnkBfZ5H/iFj1DKHovWa1emQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1695133780; a=rsa-sha256; cv=none; b=b37kbVIwQJA6ipqwIoRWh/tZ8y3xObv0qgyR8B4rIZtIcxo5FBZivQyuBMcW/TKnNnLSlq L+pVikumPMMqgVKV1ecK1hZylfMcMEJbnf17waMl5mHpzeiDEglNa3wN/U74a4PEouUoj9 irnomJ3pi6UUxPjl/Z06pyxlRtvIP0Pbea8pEMh+J/yBtKlrq6/3zJgkzP6WYnuKgMvQ1T yqv5QpN0zQ/YXQqiA18QGwuMrDwOGGIFAmcrAD3pMfRRIxkoXqV6GqXPnT5RtaUq09tcuk 7aV1n8v+65K+MGW3tBgmNpCxpclFWNwt3IzbJl2f0pF1T018dDqUsIJkdSeGdQ== 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=1695133780; 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=o1UnpQId8sqEoKpAxksEx7B+uoj0td3qinn8KC2ZBB4=; b=lSFQ8LhaxHSU34GYtOzXLZe85Fl3Vv6M+ISYSB2Xd4JoP2TB8X/qo2XhjpleqlrHHBgZEY oP95Fp30qIqzHZH/fEKkVnwJ2epM2Me6jba/49Cw7hpQUn6LzRWIPVE56gTiaDanqD60ok 7wwjrR6pEm3ka9r0KoWDx1K5SwUKRW0JxpVVUCxIDRp8TJFfUNm45W2ul45NOkf1A3B7hr meddT6Qkh3jKZd0fXEI6vKQdYgp7LBGqdmi1ond/GwdJjbr8Jgln250+glE3El5TWLuWNW EyZfHptboMQ6FO8LG6Vx6zqYx1D7HP/rl3+RjJCVuhLmIx5HSGz/E4YGPR7/bg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4RqkZX1Q1gz2Kc; Tue, 19 Sep 2023 14:29:40 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 38JETert092156; Tue, 19 Sep 2023 14:29:40 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 38JETetL092153; Tue, 19 Sep 2023 14:29:40 GMT (envelope-from git) Date: Tue, 19 Sep 2023 14:29:40 GMT Message-Id: <202309191429.38JETetL092153@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Navdeep Parhar Subject: git: f976dbaeb482 - releng/14.0 - cxgbe(4): Fix tracing with netlink enabled kernels. 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: np X-Git-Repository: src X-Git-Refname: refs/heads/releng/14.0 X-Git-Reftype: branch X-Git-Commit: f976dbaeb482ebbddf70c7374671ce9c27e4ad7f Auto-Submitted: auto-generated The branch releng/14.0 has been updated by np: URL: https://cgit.FreeBSD.org/src/commit/?id=f976dbaeb482ebbddf70c7374671ce9c27e4ad7f commit f976dbaeb482ebbddf70c7374671ce9c27e4ad7f Author: Navdeep Parhar AuthorDate: 2023-09-09 19:39:15 +0000 Commit: Navdeep Parhar CommitDate: 2023-09-19 14:28:28 +0000 cxgbe(4): Fix tracing with netlink enabled kernels. 1. The tracing ifnet's name must match the nexus name. One way to do this is to not use a unit number. 2. Do not hold the tracer lock around ether_ifattach or ether_ifdetach. netlink calls back into the driver (see stack below) and that leads to illegal lock recursion. tracer_ioctl if_ioctl get_operstate_ether get_operstate dump_iface rtnl_handle_ifevent rtnl_handle_ifattach if_attach_internal if_attach ether_ifattach t4_cloner_create Sponsored by: Chelsio Communications Approved by: re (kib) (cherry picked from commit e203cb393fe0b963dd585d0576dcc6a47a28c386) (cherry picked from commit 38da3db5f9e3e9bc9eba30a2c560bfe660ce95ec) --- sys/dev/cxgbe/t4_tracer.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/sys/dev/cxgbe/t4_tracer.c b/sys/dev/cxgbe/t4_tracer.c index 4190aa627b14..d9b336c4b64a 100644 --- a/sys/dev/cxgbe/t4_tracer.c +++ b/sys/dev/cxgbe/t4_tracer.c @@ -138,7 +138,7 @@ t4_cloner_create(struct if_clone *ifc, char *name, size_t len, caddr_t params) struct match_rr mrr; struct adapter *sc; if_t ifp; - int rc, unit; + int rc; const uint8_t lla[ETHER_ADDR_LEN] = {0, 0, 0, 0, 0, 0}; mrr.name = name; @@ -166,21 +166,14 @@ t4_cloner_create(struct if_clone *ifc, char *name, size_t len, caddr_t params) goto done; } - - unit = -1; - rc = ifc_alloc_unit(ifc, &unit); - if (rc != 0) - goto done; - ifp = if_alloc(IFT_ETHER); if (ifp == NULL) { - ifc_free_unit(ifc, unit); rc = ENOMEM; goto done; } - /* Note that if_xname is not . */ - if_initname(ifp, name, unit); + /* Note that if_xname is identical to the nexus nameunit */ + if_initname(ifp, name, -1); if_setdname(ifp, t4_cloner_name); if_setinitfn(ifp, tracer_init); if_setflags(ifp, IFF_SIMPLEX | IFF_DRV_RUNNING); @@ -192,12 +185,14 @@ t4_cloner_create(struct if_clone *ifc, char *name, size_t len, caddr_t params) tracer_media_status); ifmedia_add(&sc->media, IFM_ETHER | IFM_FDX | IFM_NONE, 0, NULL); ifmedia_set(&sc->media, IFM_ETHER | IFM_FDX | IFM_NONE); + sx_xunlock(&t4_trace_lock); ether_ifattach(ifp, lla); - + sx_xlock(&t4_trace_lock); mtx_lock(&sc->ifp_lock); if_setsoftc(ifp, sc); sc->ifp = ifp; mtx_unlock(&sc->ifp_lock); + rc = 0; done: sx_xunlock(&t4_trace_lock); end_synchronized_op(sc, 0); @@ -208,7 +203,6 @@ static int t4_cloner_destroy(struct if_clone *ifc, if_t ifp) { struct adapter *sc; - int unit = if_getdunit(ifp); sx_xlock(&t4_trace_lock); sc = if_getsoftc(ifp); @@ -219,10 +213,9 @@ t4_cloner_destroy(struct if_clone *ifc, if_t ifp) mtx_unlock(&sc->ifp_lock); ifmedia_removeall(&sc->media); } + sx_xunlock(&t4_trace_lock); ether_ifdetach(ifp); if_free(ifp); - ifc_free_unit(ifc, unit); - sx_xunlock(&t4_trace_lock); return (0); }