Skip to content

Commit

Permalink
cfg80211: fix incorrect assumption on last_request for 11d
Browse files Browse the repository at this point in the history
The incorrect assumption is the last regulatory request
(last_request) is always a country IE when processing
country IEs. Although this is true 99% of the time the
first time this happens this could not be true.

This fixes an oops in the branch check for the last_request
when accessing drv_last_ie. The access was done under the
assumption the struct won't be null.

Note to stable: to port to 29 replace as follows, only 29 has
country IE code:

s|NL80211_REGDOM_SET_BY_COUNTRY_IE|REGDOM_SET_BY_COUNTRY_IE

Cc: [email protected]
Reported-by: Quentin Armitage <[email protected]>
Signed-off-by: Luis R. Rodriguez <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
  • Loading branch information
Luis R. Rodriguez authored and linvjw committed Mar 28, 2009
1 parent 2e097dc commit cc0b6fe
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion net/wireless/reg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1601,6 +1601,10 @@ static bool reg_same_country_ie_hint(struct wiphy *wiphy,

assert_cfg80211_lock();

if (unlikely(last_request->initiator !=
NL80211_REGDOM_SET_BY_COUNTRY_IE))
return false;

request_wiphy = wiphy_idx_to_wiphy(last_request->wiphy_idx);

if (!request_wiphy)
Expand Down Expand Up @@ -1663,7 +1667,9 @@ void regulatory_hint_11d(struct wiphy *wiphy,
* we optimize an early check to exit out early if we don't have to
* do anything
*/
if (likely(wiphy_idx_valid(last_request->wiphy_idx))) {
if (likely(last_request->initiator ==
NL80211_REGDOM_SET_BY_COUNTRY_IE &&
wiphy_idx_valid(last_request->wiphy_idx))) {
struct cfg80211_registered_device *drv_last_ie;

drv_last_ie =
Expand Down

0 comments on commit cc0b6fe

Please sign in to comment.