Re: [PATCH RESEND] iwlwifi: Adjust input parameter validation in iwl_sta_calc_ht_flags()
From: Berg, Benjamin <hidden>
Date: 2025-03-03 13:47:03
Also in:
cocci, kernel-janitors, linux-wireless, lkml
On Mon, 2025-03-03 at 14:18 +0100, Markus Elfring wrote:
From: Markus Elfring <redacted> Date: Wed, 19 Apr 2023 19:19:34 +0200 The address of a data structure member was determined before a corresponding null pointer check in the implementation of the function “iwl_sta_calc_ht_flags”. Thus avoid the risk for undefined behaviour by moving the assignment for the variable “sta_ht_inf” behind the null pointer check.
I am a bit confused, I don't see any risk of undefined behaviour here. The change is obviously fine, and I guess one can argue that it is less confusing as the compiler will generate a warning if one uses the variable before assignment. However, the code is both well defined and correct. If sta is NULL then sta_ht_inf is never used, so the fact that it is effectively a NULL pointer [offsetof(struct ieee80211_sta, deflink.ht_cap)] does not matter. Benjamin
quoted hunk ↗ jump to hunk
This issue was detected by using the Coccinelle software. Fixes: 046d2e7c50e3 ("mac80211: prepare sta handling for MLO support") Signed-off-by: Markus Elfring <redacted> --- drivers/net/wireless/intel/iwlwifi/dvm/sta.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/sta.cb/drivers/net/wireless/intel/iwlwifi/dvm/sta.c index cef43cf80620..74814ce0155e 100644--- a/drivers/net/wireless/intel/iwlwifi/dvm/sta.c +++ b/drivers/net/wireless/intel/iwlwifi/dvm/sta.c@@ -147,7 +147,7 @@ static void iwl_sta_calc_ht_flags(struct iwl_priv*priv, struct iwl_rxon_context *ctx, __le32 *flags, __le32 *mask) { - struct ieee80211_sta_ht_cap *sta_ht_inf = &sta-quoted
deflink.ht_cap;+ struct ieee80211_sta_ht_cap *sta_ht_inf; *mask = STA_FLG_RTS_MIMO_PROT_MSK | STA_FLG_MIMO_DIS_MSK |@@ -156,7 +156,11 @@ static void iwl_sta_calc_ht_flags(structiwl_priv *priv, STA_FLG_AGG_MPDU_DENSITY_MSK; *flags = 0; - if (!sta || !sta_ht_inf->ht_supported) + if (!sta) + return; + + sta_ht_inf = &sta->deflink.ht_cap; + if (!sta_ht_inf->ht_supported) return; IWL_DEBUG_INFO(priv, "STA %pM SM PS mode: %s\n", -- 2.40.0
Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de Managing Directors: Sean Fennelly, Jeffrey Schneiderman, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928