aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/acx-mac80211/patches
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2017-01-27 11:11:00 +0100
committerFelix Fietkau <nbd@nbd.name>2017-02-24 15:03:48 +0100
commitbf53a8327f258d18878f145a652d91d31878cc6c (patch)
tree576e3d5169333b0dd71e6db912adf0570d72b97c /package/kernel/acx-mac80211/patches
parentf1336d2a702938efe5857ffd3290d90b2877f1cc (diff)
downloadupstream-bf53a8327f258d18878f145a652d91d31878cc6c.tar.gz
upstream-bf53a8327f258d18878f145a652d91d31878cc6c.tar.bz2
upstream-bf53a8327f258d18878f145a652d91d31878cc6c.zip
acx-mac80211: fix scan API error that could lead to a crash
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/acx-mac80211/patches')
-rw-r--r--package/kernel/acx-mac80211/patches/300-api_sync.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/package/kernel/acx-mac80211/patches/300-api_sync.patch b/package/kernel/acx-mac80211/patches/300-api_sync.patch
index 94d61351aa..d055271f60 100644
--- a/package/kernel/acx-mac80211/patches/300-api_sync.patch
+++ b/package/kernel/acx-mac80211/patches/300-api_sync.patch
@@ -81,3 +81,32 @@
adev->channel = channel;
+--- a/merge.c
++++ b/merge.c
+@@ -2776,7 +2776,10 @@ void acx_irq_work(struct work_struct *wo
+ /* HOST_INT_SCAN_COMPLETE */
+ if (irqmasked & HOST_INT_SCAN_COMPLETE) {
+ if (test_bit(ACX_FLAG_SCANNING, &adev->flags)) {
+- ieee80211_scan_completed(adev->hw, false);
++ struct cfg80211_scan_info info = {
++ .aborted = false
++ };
++ ieee80211_scan_completed(adev->hw, &info);
+ log(L_INIT, "scan completed\n");
+ clear_bit(ACX_FLAG_SCANNING, &adev->flags);
+ }
+@@ -3138,10 +3141,13 @@ int acx_op_start(struct ieee80211_hw *hw
+
+ void acx_stop(acx_device_t *adev)
+ {
++ struct cfg80211_scan_info info = {
++ .aborted = true
++ };
+ acxmem_lock_flags;
+
+ if (test_bit(ACX_FLAG_SCANNING, &adev->flags)) {
+- ieee80211_scan_completed(adev->hw, true);
++ ieee80211_scan_completed(adev->hw, &info);
+ acx_issue_cmd(adev, ACX1xx_CMD_STOP_SCAN, NULL, 0);
+ clear_bit(ACX_FLAG_SCANNING, &adev->flags);
+ }