From nobody Wed Jun 11 09:14:24 2025 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 4bHKjY019jz600Fh; Wed, 11 Jun 2025 09:14:25 +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 4bHKjX3mpPz3lsk; Wed, 11 Jun 2025 09:14:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749633264; 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=6VYA1M9N2UZsVGFnnJKXQjcj6WMgKJQagcVBBDDCXbw=; b=kV/qLe9/fqn2lDNjjGaniMO/j9nzKynQbF20SdiDBaCELznjykIC9mF3iLfZeMM43F0/Yp B5RhS+XrTzk78gQ1TdplvdaWV0lsmJbSGpHiV6WDvbqCSTulnOCGofDzmG0TtjOKtpUzn4 FtQbmJNcnM4k4aSyG8GgI7TrYGxwd5dflYKswQy8x9fS19GDFCATphMehgXx23CWEF0JEt MSl55wFvMA7CR8honuEeXMcm2VABCR2eINMoqU9CKboNBEetDT18+FsVbT/cabeSP2mDyp dHU+IwinJNgml2Lr/rmSrBOXspthL/9C3Z8Or2JCQ42NWTF/AeupoeAWR0aJTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1749633264; 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=6VYA1M9N2UZsVGFnnJKXQjcj6WMgKJQagcVBBDDCXbw=; b=fnK+X8hLxxJ/wG0BvqkXVq8S7IJMQi4v7+HY46Ol+ray4++tllwULOIcc0n8W1c/rLn7Xn YUBSu9qjT5GAk+pI45JbwDKDvl7/PLU68O9oPm9TFFZqEUgtAfeEZu5GRo60QyQWRjVr+4 /Yyzas8EHLYBsFYpmj9vYK65W5y6LUwatRrM0niJFRZKUSrHjum/C02B+AkQDWLfTyYFeL +TI8kupTXXHiaT/iUUUn1/vFSmilx7w6aszmQBcj4FCeDPLlTjd1NBLGclOVynCA2VaaCx 2njwuChBb32B5whMUY3syydE19mT2Ihg3/C5cwu+cdDU4qN0TQq2Sk80G6FhXQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1749633264; a=rsa-sha256; cv=none; b=G5y/zVnNnpXNLRVhvtevos8jHBS4I+jpsdvAzVt1xvbhVAzMzAJBLoU9G21M5FjDe6EE3h li0VYVptUpiALYXiBlWWEomYyq7NumxIEXYdK3Dpze5N9VmchkRg0uTjEsnAX1L1d3O/pU ylg9ofd0eTRF6k0V1+37n0hoJyDPG67ymEPa68VmW1fGNR/efFrFqlW3OCvCmHGGBZaw57 nu3/8IZR6pVOrjHnRvcDQqkADTNEIU2cEfvLm2bVOIrxJ1TZoDCCQ0bQB57FXJCQyn65rB MuKpDSXYdZ0R4uGp5obKYowSvBS3Rgn3Uy85p4qj98qAuNUeQV253ljXPSugbg== 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 4bHKjX1WZdz5kw; Wed, 11 Jun 2025 09:14:24 +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 55B9EOsK062241; Wed, 11 Jun 2025 09:14:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 55B9EOmi062238; Wed, 11 Jun 2025 09:14:24 GMT (envelope-from git) Date: Wed, 11 Jun 2025 09:14:24 GMT Message-Id: <202506110914.55B9EOmi062238@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: "Bjoern A. Zeeb" Subject: git: 2c9d26761453 - stable/14 - LinuxKPI: 802.11: place lock asserts for key operation 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: bz X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 2c9d26761453793b36c2e39e4ab0d9088b6e4ae4 Auto-Submitted: auto-generated The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=2c9d26761453793b36c2e39e4ab0d9088b6e4ae4 commit 2c9d26761453793b36c2e39e4ab0d9088b6e4ae4 Author: Bjoern A. Zeeb AuthorDate: 2025-06-05 21:00:53 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-06-10 23:40:25 +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 (cherry picked from commit 284af342971d102702df950a2f1e5479eaabdf0b) --- 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 a0e3123229ea..ba6c73b99c32 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);