From nobody Sun Sep 10 14:30:22 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 4RkC1W2hqwz4t6FJ; Sun, 10 Sep 2023 14:30:23 +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 4RkC1W1g50z4KLH; Sun, 10 Sep 2023 14:30:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1694356223; 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=B641uCPP61dWJ6VzZIsO4LQLBICbrAV2M5JOv3FGaq0=; b=oH5JnXOhyEcz9NGL8e99mq07ESHCYRHNY1dG8wv6vRJD6c8xT3bBy60gWv8uj1Ed7KzYpv nOIVJdi67GAuppJ34IqL4/KK+eZJMnTHn5Nco+J99r3pki6nTq+SCpZ7K3lS5RD60m7D8t 0YvM2pmAH+nz99nGzXCuJV0V8Elypi2vcplWlSKXrY2FMUD+1Wj++xHEGA3tfmRydTk5U5 icn0Y5hiRUMJt+SPCoIeV1GMpee3DIKiqJ0hyfbeqa2lsbCqv5bJ9ob41lE4b9Bk2UJesw Gu8+W3+0HuxvUTv+SndSEbvP4tqSaICtMxPFK+t2nwkUWJRSx0LuoCgFIRD3gw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1694356223; a=rsa-sha256; cv=none; b=IqevWDy2vPNTRdKfatOCwRYXbmJvN4YVFupE1aPuQbKkYDRLr6K5yvpeDqHEvW1VBPv1Wp vInlC9jNBWXpSeprKqZkAaNESxC/8/GYlbZKpyDR5XHaCX5nWmrcIaE0zJETt4ta8CDJC6 aTIkbxOGrE1lRndodlshu60VBYr05iAQxua3O7bIYkbYgXMg727XutDrZFVE6NAjieSCqZ ED34L19pLZ48ZzajN75Fnjz2z4QP6QS+z4YMqJ3m4ecECUjnW2ymMu8piRmWdHvnciVHyY b2PQniwZ9kltCy/iQkLNsVo8ZQ+R0ZzPxHY4CPf7CbPUKULfo4c48MoIvyDqMQ== 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=1694356223; 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=B641uCPP61dWJ6VzZIsO4LQLBICbrAV2M5JOv3FGaq0=; b=nlPMUQg41XUxJrvXVHSDglbTZAkGQUHifiWDN/gzSvDFCvAETCGWriGHkSOGcN5BCa9jM9 B6uQlzlEA64XM4vhVpjhnTnfwS7XZeKGwer3Iq/se7OiSSWc91e557yJc4+0OgWcy7xjJJ Vh9iejtckJlhRtrCoDvUvKNnny95cCQUvOWkS464MKB6dTF9bzC+6tUpJnRfPVjLV1jG3q EgI3WvqowIRnZCw6Du7EDEmC0iPOmE5FBMvYfvxHlg51WS91Mzn30YJKz31WoXy0yEzE4A W1q1gg8/1oozAR9ygWxpXfGPK26C62YZghUe/tcF2lVtebIynnFW1qIX3gbVUg== 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 4RkC1W0TBZz19K1; Sun, 10 Sep 2023 14:30:23 +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 38AEUMBa049968; Sun, 10 Sep 2023 14:30:22 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 38AEUMCg049965; Sun, 10 Sep 2023 14:30:22 GMT (envelope-from git) Date: Sun, 10 Sep 2023 14:30:22 GMT Message-Id: <202309101430.38AEUMCg049965@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Navdeep Parhar Subject: git: e203cb393fe0 - main - 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/main X-Git-Reftype: branch X-Git-Commit: e203cb393fe0b963dd585d0576dcc6a47a28c386 Auto-Submitted: auto-generated The branch main has been updated by np: URL: https://cgit.FreeBSD.org/src/commit/?id=e203cb393fe0b963dd585d0576dcc6a47a28c386 commit e203cb393fe0b963dd585d0576dcc6a47a28c386 Author: Navdeep Parhar AuthorDate: 2023-09-09 19:39:15 +0000 Commit: Navdeep Parhar CommitDate: 2023-09-10 14:06:32 +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 MFC after: 3 days Sponsored by: Chelsio Communications --- 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); }