cfg80211: initialize reg_rule in __freq_reg_info()
authorLuca Coelho <luciano.coelho@intel.com>
Thu, 4 Feb 2021 13:44:39 +0000 (15:44 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 12 Feb 2021 07:56:19 +0000 (08:56 +0100)
Sparse started warning on this function because we can potentially
return an uninitialized value.  The reason is that if the caller
passes a min_bw value that is higher then the last value in bws[], we
will not go into the loop and reg_rule will remain initialized.  This
cannot happen because the only caller of this function uses either 1
or 20 in min_bw, but the function will be more robust if we
pre-initialize the value.

Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20210204154439.6c884ea7281c.I257278d03b0c1ae0aa6631672cfa48f1a95d5996@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/wireless/reg.c

index 452b698f42befc3c1bbef905e1f025d150ea543a..21536c48deecc95560bb557c4f93642c6d336f0d 100644 (file)
@@ -1629,7 +1629,7 @@ __freq_reg_info(struct wiphy *wiphy, u32 center_freq, u32 min_bw)
 {
        const struct ieee80211_regdomain *regd = reg_get_regdomain(wiphy);
        static const u32 bws[] = {0, 1, 2, 4, 5, 8, 10, 16, 20};
-       const struct ieee80211_reg_rule *reg_rule;
+       const struct ieee80211_reg_rule *reg_rule = ERR_PTR(-ERANGE);
        int i = ARRAY_SIZE(bws) - 1;
        u32 bw;