ath6kl: check for sband existence when creating scan cmd
authorThomas Pedersen <c_tpeder@qca.qualcomm.com>
Tue, 24 Apr 2012 19:50:41 +0000 (12:50 -0700)
committerKalle Valo <kvalo@qca.qualcomm.com>
Wed, 25 Apr 2012 06:36:00 +0000 (09:36 +0300)
The patch "ath6kl: support fw reporting phy capabilities" gave the
firmware the ability to disable certain wiphy supported bands. Check if
this is the case in ath6kl_wmi_beginscan_cmd to avoid dereferencing a
NULL pointer.

kvalo: change the patch so that there's no code between declarations

Signed-off-by: Thomas Pedersen <c_tpeder@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath6kl/wmi.c

index bb802e49919cba08bfc8cf6a56fd4f8421f219f4..102477d5900fdd32502529061e1efad271f7c8dd 100644 (file)
@@ -1818,12 +1818,14 @@ int ath6kl_wmi_beginscan_cmd(struct wmi *wmi, u8 if_idx,
                             u32 home_dwell_time, u32 force_scan_interval,
                             s8 num_chan, u16 *ch_list, u32 no_cck, u32 *rates)
 {
+       struct ieee80211_supported_band *sband;
        struct sk_buff *skb;
        struct wmi_begin_scan_cmd *sc;
-       s8 size;
+       s8 size, *supp_rates;
        int i, band, ret;
        struct ath6kl *ar = wmi->parent_dev;
        int num_rates;
+       u32 ratemask;
 
        size = sizeof(struct wmi_begin_scan_cmd);
 
@@ -1850,10 +1852,13 @@ int ath6kl_wmi_beginscan_cmd(struct wmi *wmi, u8 if_idx,
        sc->num_ch = num_chan;
 
        for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
-               struct ieee80211_supported_band *sband =
-                   ar->wiphy->bands[band];
-               u32 ratemask = rates[band];
-               u8 *supp_rates = sc->supp_rates[band].rates;
+               sband = ar->wiphy->bands[band];
+
+               if (!sband)
+                       continue;
+
+               ratemask = rates[band];
+               supp_rates = sc->supp_rates[band].rates;
                num_rates = 0;
 
                for (i = 0; i < sband->n_bitrates; i++) {