Skip to content

Commit

Permalink
cfg80211: fix for duplicate userspace replies
Browse files Browse the repository at this point in the history
This fixes an incorrect assumption (BUG_ON) made in
cfg80211 when handling country IE regulatory requests.
The assumption was that we won't try to call_crda()
twice for the same event and therefore we will not
recieve two replies through nl80211 for the regulatory
request. As it turns out it is true we don't call_crda()
twice for the same event, however, kobject_uevent_env()
*might* send the udev event twice and/or userspace can
simply process the udev event twice. We remove the BUG_ON()
and simply ignore the duplicate request.

For details refer to this thread:

http://marc.info/?l=linux-wireless&m=124149987921337&w=2

Cc: stable@kernel.org
Reported-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Luis R. Rodriguez authored and John W. Linville committed Jun 3, 2009
1 parent 3b8bcfd commit 729e9c7
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 @@ -2171,7 +2171,13 @@ static int __set_regdom(const struct ieee80211_regdomain *rd)
* the country IE rd with what CRDA believes that country should have
*/

BUG_ON(!country_ie_regdomain);
/*
* Userspace could have sent two replies with only
* one kernel request. By the second reply we would have
* already processed and consumed the country_ie_regdomain.
*/
if (!country_ie_regdomain)
return -EALREADY;
BUG_ON(rd == country_ie_regdomain);

/*
Expand Down

0 comments on commit 729e9c7

Please sign in to comment.