Fix race in regulatory code (rhbz 919176)
This commit is contained in:
parent
54cd486f88
commit
87048d8884
@ -745,6 +745,9 @@ Patch23006: fix-child-thread-introspection.patch
|
|||||||
#rhbz 928024
|
#rhbz 928024
|
||||||
Patch23008: forcedeth-dma-error-check.patch
|
Patch23008: forcedeth-dma-error-check.patch
|
||||||
|
|
||||||
|
#rhbz 919176
|
||||||
|
Patch25010: wireless-regulatory-fix-channel-disabling-race-condition.patch
|
||||||
|
|
||||||
# END OF PATCH DEFINITIONS
|
# END OF PATCH DEFINITIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -1440,6 +1443,9 @@ ApplyPatch fix-child-thread-introspection.patch
|
|||||||
#rhbz 928024
|
#rhbz 928024
|
||||||
ApplyPatch forcedeth-dma-error-check.patch
|
ApplyPatch forcedeth-dma-error-check.patch
|
||||||
|
|
||||||
|
#rhbz 919176
|
||||||
|
ApplyPatch wireless-regulatory-fix-channel-disabling-race-condition.patch
|
||||||
|
|
||||||
# END OF PATCH APPLICATIONS
|
# END OF PATCH APPLICATIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -2273,6 +2279,9 @@ fi
|
|||||||
# ||----w |
|
# ||----w |
|
||||||
# || ||
|
# || ||
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 16 2013 Josh Boyer <jwboyer@redhat.com>
|
||||||
|
- Fix race in regulatory code (rhbz 919176)
|
||||||
|
|
||||||
* Mon Apr 15 2013 Josh Boyer <jwboyer@redhat.com>
|
* Mon Apr 15 2013 Josh Boyer <jwboyer@redhat.com>
|
||||||
- Fix debug patches to build on s390x/ppc
|
- Fix debug patches to build on s390x/ppc
|
||||||
|
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
From: Johannes Berg <johannes.berg@intel.com>
|
||||||
|
|
||||||
|
When a full scan 2.4 and 5 GHz scan is scheduled, but then the 2.4 GHz
|
||||||
|
part of the scan disables a 5.2 GHz channel due to, e.g. receiving
|
||||||
|
country or frequency information, that 5.2 GHz channel might already
|
||||||
|
be in the list of channels to scan next. Then, when the driver checks
|
||||||
|
if it should do a passive scan, that will return false and attempt an
|
||||||
|
active scan. This is not only wrong but can also lead to the iwlwifi
|
||||||
|
device firmware crashing since it checks regulatory as well.
|
||||||
|
|
||||||
|
Fix this by not setting the channel flags to just disabled but rather
|
||||||
|
OR'ing in the disabled flag. That way, even if the race happens, the
|
||||||
|
channel will be scanned passively which is still (mostly) correct.
|
||||||
|
|
||||||
|
Cc: stable@vger.kernel.org
|
||||||
|
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||||
|
---
|
||||||
|
net/wireless/reg.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/net/wireless/reg.c b/net/wireless/reg.c
|
||||||
|
index 93ab840..507c28e 100644
|
||||||
|
--- a/net/wireless/reg.c
|
||||||
|
+++ b/net/wireless/reg.c
|
||||||
|
@@ -855,7 +855,7 @@ static void handle_channel(struct wiphy *wiphy,
|
||||||
|
return;
|
||||||
|
|
||||||
|
REG_DBG_PRINT("Disabling freq %d MHz\n", chan->center_freq);
|
||||||
|
- chan->flags = IEEE80211_CHAN_DISABLED;
|
||||||
|
+ chan->flags |= IEEE80211_CHAN_DISABLED;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
1.8.0
|
||||||
|
|
||||||
|
--
|
||||||
|
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
|
||||||
|
the body of a message to majordomo@vger.kernel.org
|
||||||
|
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
Loading…
Reference in New Issue
Block a user