From nobody Tue Apr 29 11:41:52 2025 X-Original-To: dev-commits-src-branches@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 4Zmz1Y28rpz5tvFN; Tue, 29 Apr 2025 11:41:53 +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 4Zmz1Y0QC8z3x8m; Tue, 29 Apr 2025 11:41:53 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1745926913; 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=CFuIdZCLevZqoLsVt4S7iT5IMhD+TRvZcNCe3urIekg=; b=XaK1bZE83cJHg3DId9845c5MqmtV17qVeM+nhIj0CaZTdrfVu6jLizG3VTVkm5JdM1qsSw tp1Eb5tLeYUwDtUFmLKus6slm5Tw2N6Pw3BoC1ST+AsgM4GQogw3qF5O1eUpn+kJvZ/422 jQ6COcPP279bqXXbpVEl9bkI+FQ0f/71YjG7dRte3lWfXfsJYoSrhYyp5UstOOpuk0tnLf LMWU6e1WOlMG5wv091woiDBc2P3lyTGmm0SVmEKGH10qjPjj4VK9YGyEaGoWDBd8dgyW25 xRWb+NBs5yOdeZ4JAlOIJfhCYsbmzzrQykKTIPLcxTFjN9d9h5qm/PwUpbv5cQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1745926913; a=rsa-sha256; cv=none; b=lIHlgidnheBxTBMfmjQ0WOspjBptfMQfzSdH4gBOKIZNp1fFgDPfOIrlcdxflRH2LhP2cM jtB5T9uAwJoJc/YRUa8vmnCNiAH25m236S8OTLpe+MsRvKsnSO4ptTCOWZu1E08vasuKtD UQrKU/DzWytE555SoR5Wp7bCYmeN0uX+w5KGS5ws4qgox1d2Y9ATypYx02FO1TwvUwXOkR ucic7wmRI8mxB0Nzc6TeRwNTqrGyI0uqzT/Nl7kkTJ7HBwEU7+brEZBfvWJakKkE8PMyVz SXJyweBq5+Mbq2IE9j1zgv0HH2/NSe8dH0KGZc3dOfrmVaG+zsDsIAj1Wx8HPQ== 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=1745926913; 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=CFuIdZCLevZqoLsVt4S7iT5IMhD+TRvZcNCe3urIekg=; b=Jpe5TMEnRpcMppbtGONalJHnhaR8kTXwbFZChr1bQvxldwd+xDDtZnG8bQQif06h9KAv9q ZVbcwBR98eqODsIAMVxhpv95eXHhU4ponLDK99suCQNq8yfgfMKQwQdwgNo3UxD2jpC+wU WJsOLQbzxOWAQ9rVxkULJSpEpqQakPfJ7nbup6QDRfkZPktd+mdDCWK6v9jWn7bwKM+OEI of+cFJRCn3g0RjyM09lJuDCkCP5RrmQB9DRCRf85RkQs9stmDMVNgSI7a5OmUaPGFCf7vr DaUcguGxqIr7HHizVa0joBtq2cL5RddJLPTmrFw8gSrlvpc3sofPraoL6YyuzA== 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 4Zmz1X6ZFhz3rl; Tue, 29 Apr 2025 11:41:52 +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 53TBfqf6046280; Tue, 29 Apr 2025 11:41:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53TBfqA2046277; Tue, 29 Apr 2025 11:41:52 GMT (envelope-from git) Date: Tue, 29 Apr 2025 11:41:52 GMT Message-Id: <202504291141.53TBfqA2046277@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: aa8e8f833a6e - stable/14 - LinuxKPI: 802.11: add checks and improve tracing to key operations List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@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: aa8e8f833a6e2045a2edf12e24d125d248a7ee85 Auto-Submitted: auto-generated The branch stable/14 has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=aa8e8f833a6e2045a2edf12e24d125d248a7ee85 commit aa8e8f833a6e2045a2edf12e24d125d248a7ee85 Author: Bjoern A. Zeeb AuthorDate: 2025-04-15 21:11:08 +0000 Commit: Bjoern A. Zeeb CommitDate: 2025-04-29 10:49:30 +0000 LinuxKPI: 802.11: add checks and improve tracing to key operations Use the IEEE80211_KEY_FLAG_BITS for logging. Add more logging to aid debugging key and cipher operations. Add extra checks that key is actually defined before attempting any key operation. Move some variables to before they are needed to avoid extra work in case of early return. Makes their scope more clear. Sponsored by: The FreeBSD Foundation (cherry picked from commit a6f6329c92a993ddaaa4a7daf2b53155f805d50f) --- sys/compat/linuxkpi/common/src/linux_80211.c | 63 +++++++++++++++++++++------- 1 file changed, 49 insertions(+), 14 deletions(-) diff --git a/sys/compat/linuxkpi/common/src/linux_80211.c b/sys/compat/linuxkpi/common/src/linux_80211.c index baad8ad00a69..2dc7b7c8ec9a 100644 --- a/sys/compat/linuxkpi/common/src/linux_80211.c +++ b/sys/compat/linuxkpi/common/src/linux_80211.c @@ -1184,6 +1184,14 @@ lkpi_sta_del_keys(struct ieee80211_hw *hw, struct ieee80211_vif *vif, continue; kc = lsta->kc[keyix]; +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) + ic_printf(lsta->ni->ni_ic, "%s: running set_key cmd %d(%s) for " + "sta %6D: keyidx %u hw_key_idx %u flags %b\n", + __func__, DISABLE_KEY, "DISABLE", lsta->sta.addr, ":", + kc->keyidx, kc->hw_key_idx, kc->flags, IEEE80211_KEY_FLAG_BITS); +#endif + err = lkpi_80211_mo_set_key(hw, DISABLE_KEY, vif, LSTA_TO_STA(lsta), kc); if (err != 0) { @@ -1202,9 +1210,9 @@ lkpi_sta_del_keys(struct ieee80211_hw *hw, struct ieee80211_vif *vif, #ifdef LINUXKPI_DEBUG_80211 if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) ic_printf(lsta->ni->ni_ic, "%s: set_key cmd %d(%s) for " - "sta %6D succeeded: keyidx %u hw_key_idx %u flags %#10x\n", + "sta %6D succeeded: keyidx %u hw_key_idx %u flags %b\n", __func__, DISABLE_KEY, "DISABLE", lsta->sta.addr, ":", - kc->keyidx, kc->hw_key_idx, kc->flags); + kc->keyidx, kc->hw_key_idx, kc->flags, IEEE80211_KEY_FLAG_BITS); #endif lsta->kc[keyix] = NULL; @@ -1229,16 +1237,18 @@ _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); - vif = LVIF_TO_VIF(lvif); + 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); + return (0); + } if (vap->iv_bss == NULL) { ic_printf(ic, "%s: iv_bss %p for vap %p is NULL\n", __func__, vap->iv_bss, vap); return (0); } + ni = ieee80211_ref_node(vap->iv_bss); lsta = ni->ni_drv_data; if (lsta == NULL) { @@ -1273,6 +1283,18 @@ _lkpi_iv_key_delete(struct ieee80211vap *vap, const struct ieee80211_key *k) goto out; } +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) + ic_printf(ic, "%s: running set_key cmd %d(%s) for sta %6D: " + "keyidx %u hw_key_idx %u flags %b\n", __func__, + DISABLE_KEY, "DISABLE", sta->addr, ":", + 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) { ic_printf(ic, "%s: set_key cmd %d(%s) for sta %6D failed: %d\n", @@ -1284,9 +1306,9 @@ _lkpi_iv_key_delete(struct ieee80211vap *vap, const struct ieee80211_key *k) #ifdef LINUXKPI_DEBUG_80211 if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) ic_printf(ic, "%s: set_key cmd %d(%s) for sta %6D succeeded: " - "keyidx %u hw_key_idx %u flags %#10x\n", __func__, + "keyidx %u hw_key_idx %u flags %b\n", __func__, DISABLE_KEY, "DISABLE", sta->addr, ":", - kc->keyidx, kc->hw_key_idx, kc->flags); + kc->keyidx, kc->hw_key_idx, kc->flags, IEEE80211_KEY_FLAG_BITS); #endif lsta->kc[k->wk_keyix] = NULL; free(kc, M_LKPI80211); @@ -1321,10 +1343,11 @@ _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); - lvif = VAP_TO_LVIF(vap); - vif = LVIF_TO_VIF(lvif); + 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); + return (0); + } if (vap->iv_bss == NULL) { ic_printf(ic, "%s: iv_bss %p for vap %p is NULL\n", @@ -1395,6 +1418,18 @@ _lkpi_iv_key_set(struct ieee80211vap *vap, const struct ieee80211_key *k) }; lsta->kc[k->wk_keyix] = kc; +#ifdef LINUXKPI_DEBUG_80211 + if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) + ic_printf(ic, "%s: running set_key cmd %d(%s) for sta %6D: " + "kc %p keyidx %u hw_key_idx %u flags %b\n", __func__, + SET_KEY, "SET", sta->addr, ":", + kc, 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, SET_KEY, vif, sta, kc); if (error != 0) { ic_printf(ic, "%s: set_key cmd %d(%s) for sta %6D failed: %d\n", @@ -1408,9 +1443,9 @@ _lkpi_iv_key_set(struct ieee80211vap *vap, const struct ieee80211_key *k) #ifdef LINUXKPI_DEBUG_80211 if (linuxkpi_debug_80211 & D80211_TRACE_HW_CRYPTO) ic_printf(ic, "%s: set_key cmd %d(%s) for sta %6D succeeded: " - "kc %p keyidx %u hw_key_idx %u flags %#010x\n", __func__, + "kc %p keyidx %u hw_key_idx %u flags %b\n", __func__, SET_KEY, "SET", sta->addr, ":", - kc, kc->keyidx, kc->hw_key_idx, kc->flags); + kc, kc->keyidx, kc->hw_key_idx, kc->flags, IEEE80211_KEY_FLAG_BITS); #endif ieee80211_free_node(ni);