wireless: Do not allow disabled channel in scan request
[pandora-kernel.git] / net / wireless / sme.c
index dec0fa2..6e86d5a 100644 (file)
@@ -110,17 +110,22 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev)
        else {
                int i = 0, j;
                enum ieee80211_band band;
+               struct ieee80211_supported_band *bands;
+               struct ieee80211_channel *channel;
 
                for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
-                       if (!wdev->wiphy->bands[band])
+                       bands = wdev->wiphy->bands[band];
+                       if (!bands)
                                continue;
-                       for (j = 0; j < wdev->wiphy->bands[band]->n_channels;
-                            i++, j++)
-                               request->channels[i] =
-                                       &wdev->wiphy->bands[band]->channels[j];
-                       request->rates[band] =
-                               (1 << wdev->wiphy->bands[band]->n_bitrates) - 1;
+                       for (j = 0; j < bands->n_channels; j++) {
+                               channel = &bands->channels[j];
+                               if (channel->flags & IEEE80211_CHAN_DISABLED)
+                                       continue;
+                               request->channels[i++] = channel;
+                       }
+                       request->rates[band] = (1 << bands->n_bitrates) - 1;
                }
+               n_channels = i;
        }
        request->n_channels = n_channels;
        request->ssids = (void *)&request->channels[n_channels];