]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mac80211: fix macro scoping in for_each_link_data
authorAditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
Fri, 18 Jul 2025 06:08:34 +0000 (11:38 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 18 Jul 2025 12:08:11 +0000 (14:08 +0200)
The for_each_link_data() macro currently declares a local variable
__sdata directly, which could lead to compiler warnings or errors when
reused in the same function or within switch-case blocks due to variable
redefinition or invalid scoping.

To address this, restructure the macro to use an outer for-loop that runs
only once, allowing safe declaration of __sdata without polluting the outer
scope. This ensures compatibility with static analyzers.

No functional changes; this is purely a cleanup to improve macro hygiene.

Signed-off-by: Aditya Kumar Singh <aditya.kumar.singh@oss.qualcomm.com>
Signed-off-by: Maharaja Kennadyrajan <maharaja.kennadyrajan@oss.qualcomm.com>
Link: https://patch.msgid.link/20250718060837.59371-2-maharaja.kennadyrajan@oss.qualcomm.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ieee80211_i.h

index 084e2673a27ebb484d71e078d190f50c8c2f3d29..7c18c51966d0a476f2e55c8ec64d80db73a19293 100644 (file)
@@ -1242,7 +1242,9 @@ struct ieee80211_sub_if_data *vif_to_sdata(struct ieee80211_vif *p)
        if ((_link = rcu_dereference((___sdata)->link[___link_id])))
 
 #define for_each_link_data(sdata, __link)                                      \
-       struct ieee80211_sub_if_data *__sdata = sdata;                          \
+       /* outer loop just to define the variable ... */                        \
+       for (struct ieee80211_sub_if_data *__sdata = (sdata); __sdata;          \
+               __sdata = NULL /* always stop */)                               \
        for (int __link_id = 0;                                                 \
             __link_id < ARRAY_SIZE((__sdata)->link); __link_id++)              \
                if ((!(__sdata)->vif.valid_links ||                             \