From nobody Fri Jun 6 16:29:35 2025 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 4bDRc02TBZz5xd2M; Fri, 06 Jun 2025 16:29:36 +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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bDRc00WLbz3NWK; Fri, 06 Jun 2025 16:29:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749227376; 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=n6P5cpRgcqqiSLvIjEjs00iBhipnzUT3WvZeT7KOMt0=; b=XcyA/jrm2o+dpEWEOaQpMDYVEzTLPK5fzpjVBAh6+3FIHlXji7Wvkeyi0mjVmBfi2jG1hQ IKu1cvE99ykjsvh2qEEY9V1DBHJ2VKpEd2L1zFM7J+EZGo3G26yFb0wdzdEX49wGjFH5Kd O0TwgH1/DYwDjj0x90HgtVi7wkY4mcjb5DjFrIZ/LWxdYgc05WF80GMzQlWa7HpgSgoXWA v2TRRHMJV8fJZ+IcEu08VItyTp9MIBr/UEZeUX/tqGoDvy8TPVsTPTyw19a3dHg9Lxm/lz 9xf8STna8mTkfnVTdtj1E8IBMQ/SMkhuXn26UfT/eYnv0umP21ZEtDd++l5RdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749227376; 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=n6P5cpRgcqqiSLvIjEjs00iBhipnzUT3WvZeT7KOMt0=; b=OBaOvRJmt05DgxGpz8upLm/H4FbWRYvVRxWIxZXoDo3G0q/vpaE06umzb1KgQNI3Hy5Gch LiqIYvqwK2GmL+wOkDuEbrdoEK2vEDosHzLSrAuwEt9SR+0OWh2ZEsvvfUazS+LnggAHKV PPpo6SkPlxWp8EBPsbPGoIvpIKoo9k9tQnwALoCEHCRdF8s/CEKuGU8o46KUdfXbN8ADEl Pk6gKg+vwzfs84J9fs3Bz4AvFO+nLi4X+VFCFu1TkqKPFgQ+G7Uw+gjQQKPf50efWmtm5i EucneUMyAXvKkeO/s0yNnKRC7Wc5vTpy0E/AwPkpb1hsrfNzXs91Z3l1u6CMhw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1749227376; a=rsa-sha256; cv=none; b=orsUBCOmNLx2A6iWom67S5PzUjtdVLHPUUCZa615meg5Kq3X3ZJKzhobTVMgnFlL4J8NYt M//VYg79cMOG5vODq3i7tXMZw7wYiR1ZFZPMbttYvp1RtZZ2AO2ejVFmxQsdWGy9+EdGOh 7Gt7vox0tt7yPmSz9fUjLdoQCam03p6aQx5Gcvevb6CY1sZ05XYV7Xk/p+ahz8ndnP5PN4 3eatfXryEyn0SrU7OzJ3lfoAUTjD2blky00aCwMvkTuIOUxmatC8twL6HF3ZVCyFqU6AlM o2QS7yWCxL2mf3wU59hKqUUjLqhOASbqOrGDbTzjcYPZIYBvj4FcgBoygIT0cA== 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 4bDRbz755Xz12Xt; Fri, 06 Jun 2025 16:29:35 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 556GTZWq067460; Fri, 6 Jun 2025 16:29:35 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 556GTZx2067457; Fri, 6 Jun 2025 16:29:35 GMT (envelope-from git) Date: Fri, 6 Jun 2025 16:29:35 GMT Message-Id: <202506061629.556GTZx2067457@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 284af342971d - main - LinuxKPI: 802.11: place lock asserts for key operation 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: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 284af342971d102702df950a2f1e5479eaabdf0b Auto-Submitted: auto-generated The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=284af342971d102702df950a2f1e5479eaabdf0b commit 284af342971d102702df950a2f1e5479eaabdf0b Author: Bjoern A. Zeeb AuthorDate: 2025-06-05 21:00:53 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-06-06 16:27:59 +0000 LinuxKPI: 802.11: place lock asserts for key operation Since b8dfc3ecf7031 we hold the wiphy lock over any key updates. Assert that on function entry. Given this invariant there is no need to recheck a kay under lock now, as the first lookup already is under the lock, so simplify the code. Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/compat/linuxkpi/common/src/linux_80211.c | 35 +++++++++++++++------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index 921c986fcd06..e81c77d67001 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -1298,6 +1298,16 @@ lkpi_iv_key_delete(struct ieee80211vap *vap, const struct ieee80211_key *k) int error; ic = vap->iv_ic; + lhw = ic->ic_softc; + hw = LHW_TO_HW(lhw); + lvif = VAP_TO_LVIF(vap); + + /* + * Make sure we do not make it here without going through + * lkpi_iv_key_update_begin() first. + */ + lockdep_assert_wiphy(hw->wiphy); + if (IEEE80211_KEY_UNDEFINED(k)) { ic_printf(ic, "%s: vap %p key %p is undefined: %p %u\n", __func__, vap, k, k->wk_cipher, k->wk_keyix); @@ -1331,18 +1341,7 @@ lkpi_iv_key_delete(struct ieee80211vap *vap, const struct ieee80211_key *k) ieee80211_free_node(ni); return (1); } - kc = lsta->kc[k->wk_keyix]; - /* Re-check under lock. */ - if (kc == NULL) { -#ifdef LINUXKPI_DEBUG_80211 - if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) - ic_printf(ic, "%s: sta %6D and key information vanished, " - "returning success\n", __func__, sta->addr, ":"); -#endif - error = 1; - goto out; - } #ifdef LINUXKPI_DEBUG_80211 if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) @@ -1353,9 +1352,6 @@ lkpi_iv_key_delete(struct ieee80211vap *vap, const struct ieee80211_key *k) kc->keyidx, kc->hw_key_idx, kc->flags, IEEE80211_KEY_FLAG_BITS); #endif - lhw = ic->ic_softc; - hw = LHW_TO_HW(lhw); - lvif = VAP_TO_LVIF(vap); vif = LVIF_TO_VIF(lvif); error = lkpi_80211_mo_set_key(hw, DISABLE_KEY, vif, sta, kc); if (error != 0) { @@ -1400,6 +1396,15 @@ lkpi_iv_key_set(struct ieee80211vap *vap, const struct ieee80211_key *k) int error; ic = vap->iv_ic; + lhw = ic->ic_softc; + hw = LHW_TO_HW(lhw); + + /* + * Make sure we do not make it here without going through + * lkpi_iv_key_update_begin() first. + */ + lockdep_assert_wiphy(hw->wiphy); + if (IEEE80211_KEY_UNDEFINED(k)) { ic_printf(ic, "%s: vap %p key %p is undefined: %p %u\n", __func__, vap, k, k->wk_cipher, k->wk_keyix); @@ -1492,8 +1497,6 @@ lkpi_iv_key_set(struct ieee80211vap *vap, const struct ieee80211_key *k) kc->keylen, kc->flags, IEEE80211_KEY_FLAG_BITS); #endif - lhw = ic->ic_softc; - hw = LHW_TO_HW(lhw); lvif = VAP_TO_LVIF(vap); vif = LVIF_TO_VIF(lvif); error = lkpi_80211_mo_set_key(hw, SET_KEY, vif, sta, kc);