cfg80211: replace reg.c Nokia commit c4c32294
Nokia hasn't gotten back to me in over 1 month for a relicense
change request. There are only a few changes that they contributed,
so just reverting their changes but replacing with another set.
This change replaces this commit:
commit c4c322941c
Author: Yuri Ershov <ext-yuri.ershov@nokia.com>
Date: Tue Jun 29 15:08:08 2010 +0400
cfg80211: Update of regulatory request initiator handling
In some cases there could be possible dereferencing freed pointer. The
update is intended to avoid this issue.
Signed-off-by: Yuri Ershov <ext-yuri.ershov@nokia.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Cc: Petri Karhula <petri.karhula@nokia.com>
Signed-off-by: Luis R. Rodriguez <mcgrof@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
a98aa7ae14
commit
8848bef038
@ -1480,18 +1480,18 @@ static int __regulatory_hint(struct wiphy *wiphy,
|
||||
}
|
||||
|
||||
/* This processes *all* regulatory hints */
|
||||
static void reg_process_hint(struct regulatory_request *reg_request)
|
||||
static void reg_process_hint(struct regulatory_request *reg_request,
|
||||
enum nl80211_reg_initiator reg_initiator)
|
||||
{
|
||||
int r = 0;
|
||||
struct wiphy *wiphy = NULL;
|
||||
enum nl80211_reg_initiator initiator = reg_request->initiator;
|
||||
|
||||
BUG_ON(!reg_request->alpha2);
|
||||
|
||||
if (wiphy_idx_valid(reg_request->wiphy_idx))
|
||||
wiphy = wiphy_idx_to_wiphy(reg_request->wiphy_idx);
|
||||
|
||||
if (reg_request->initiator == NL80211_REGDOM_SET_BY_DRIVER &&
|
||||
if (reg_initiator == NL80211_REGDOM_SET_BY_DRIVER &&
|
||||
!wiphy) {
|
||||
kfree(reg_request);
|
||||
return;
|
||||
@ -1501,7 +1501,7 @@ static void reg_process_hint(struct regulatory_request *reg_request)
|
||||
/* This is required so that the orig_* parameters are saved */
|
||||
if (r == -EALREADY && wiphy &&
|
||||
wiphy->flags & WIPHY_FLAG_STRICT_REGULATORY) {
|
||||
wiphy_update_regulatory(wiphy, initiator);
|
||||
wiphy_update_regulatory(wiphy, reg_initiator);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1510,7 +1510,7 @@ static void reg_process_hint(struct regulatory_request *reg_request)
|
||||
* source of bogus requests.
|
||||
*/
|
||||
if (r != -EALREADY &&
|
||||
reg_request->initiator == NL80211_REGDOM_SET_BY_USER)
|
||||
reg_initiator == NL80211_REGDOM_SET_BY_USER)
|
||||
schedule_delayed_work(®_timeout, msecs_to_jiffies(3142));
|
||||
}
|
||||
|
||||
@ -1547,7 +1547,7 @@ static void reg_process_pending_hints(void)
|
||||
|
||||
spin_unlock(®_requests_lock);
|
||||
|
||||
reg_process_hint(reg_request);
|
||||
reg_process_hint(reg_request, reg_request->initiator);
|
||||
|
||||
out:
|
||||
mutex_unlock(®_mutex);
|
||||
|
Loading…
Reference in New Issue
Block a user