diff options
-rw-r--r-- | drivers/net/wireless/mwifiex/sta_ioctl.c | 5 | ||||
-rw-r--r-- | include/net/cfg80211.h | 8 | ||||
-rw-r--r-- | net/wireless/scan.c | 11 |
3 files changed, 7 insertions, 17 deletions
diff --git a/drivers/net/wireless/mwifiex/sta_ioctl.c b/drivers/net/wireless/mwifiex/sta_ioctl.c index ee85b41a4dfd..8866a2b69c94 100644 --- a/drivers/net/wireless/mwifiex/sta_ioctl.c +++ b/drivers/net/wireless/mwifiex/sta_ioctl.c | |||
@@ -162,11 +162,6 @@ int mwifiex_fill_new_bss_desc(struct mwifiex_private *priv, | |||
162 | 162 | ||
163 | rcu_read_lock(); | 163 | rcu_read_lock(); |
164 | ies = rcu_dereference(bss->ies); | 164 | ies = rcu_dereference(bss->ies); |
165 | if (WARN_ON(!ies)) { | ||
166 | /* should never happen */ | ||
167 | rcu_read_unlock(); | ||
168 | return -EINVAL; | ||
169 | } | ||
170 | beacon_ie = kmemdup(ies->data, ies->len, GFP_ATOMIC); | 165 | beacon_ie = kmemdup(ies->data, ies->len, GFP_ATOMIC); |
171 | beacon_ie_len = ies->len; | 166 | beacon_ie_len = ies->len; |
172 | rcu_read_unlock(); | 167 | rcu_read_unlock(); |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 04a702d1f2a5..fb766314b3a1 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -1287,10 +1287,10 @@ struct cfg80211_bss_ies { | |||
1287 | * @tsf: timestamp of last received update | 1287 | * @tsf: timestamp of last received update |
1288 | * @beacon_interval: the beacon interval as from the frame | 1288 | * @beacon_interval: the beacon interval as from the frame |
1289 | * @capability: the capability field in host byte order | 1289 | * @capability: the capability field in host byte order |
1290 | * @ies: the information elements (Note that there | 1290 | * @ies: the information elements (Note that there is no guarantee that these |
1291 | * is no guarantee that these are well-formed!); this is a pointer to | 1291 | * are well-formed!); this is a pointer to either the beacon_ies or |
1292 | * either the beacon_ies or proberesp_ies depending on whether Probe | 1292 | * proberesp_ies depending on whether Probe Response frame has been |
1293 | * Response frame has been received | 1293 | * received. It is always non-%NULL. |
1294 | * @beacon_ies: the information elements from the last Beacon frame | 1294 | * @beacon_ies: the information elements from the last Beacon frame |
1295 | * (implementation note: if @hidden_beacon_bss is set this struct doesn't | 1295 | * (implementation note: if @hidden_beacon_bss is set this struct doesn't |
1296 | * own the beacon_ies, but they're just pointers to the ones from the | 1296 | * own the beacon_ies, but they're just pointers to the ones from the |
diff --git a/net/wireless/scan.c b/net/wireless/scan.c index 5e0983d60428..02a238329c83 100644 --- a/net/wireless/scan.c +++ b/net/wireless/scan.c | |||
@@ -1293,15 +1293,10 @@ ieee80211_bss(struct wiphy *wiphy, struct iw_request_info *info, | |||
1293 | 1293 | ||
1294 | rcu_read_lock(); | 1294 | rcu_read_lock(); |
1295 | ies = rcu_dereference(bss->pub.ies); | 1295 | ies = rcu_dereference(bss->pub.ies); |
1296 | if (ies) { | 1296 | rem = ies->len; |
1297 | rem = ies->len; | 1297 | ie = ies->data; |
1298 | ie = ies->data; | ||
1299 | } else { | ||
1300 | rem = 0; | ||
1301 | ie = NULL; | ||
1302 | } | ||
1303 | 1298 | ||
1304 | while (ies && rem >= 2) { | 1299 | while (rem >= 2) { |
1305 | /* invalid data */ | 1300 | /* invalid data */ |
1306 | if (ie[1] > rem - 2) | 1301 | if (ie[1] > rem - 2) |
1307 | break; | 1302 | break; |