[PATCH RESEND] iwlwifi: Adjust input parameter validation in iwl_sta_calc_ht_flags()

From: Markus Elfring
Date: Mon Mar 03 2025 - 08:18:40 EST


From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
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.

This issue was detected by using the Coccinelle software.

Fixes: 046d2e7c50e3 ("mac80211: prepare sta handling for MLO support")
Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
---
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.c b/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->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(struct iwl_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