aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/306-ath10k-Ensure-peer_map-references-are-cleaned-up.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2016-06-26 19:00:01 +0200
committerFelix Fietkau <nbd@nbd.name>2016-07-02 19:34:50 +0200
commit67a7daa938671a5c7006e5d689c297a26499d75c (patch)
treec11db1b831745bcc356f105f421cefbba938cb41 /package/kernel/mac80211/patches/306-ath10k-Ensure-peer_map-references-are-cleaned-up.patch
parentde165b66be47497906d3cf4f1ca6071ee25e2003 (diff)
downloadupstream-67a7daa938671a5c7006e5d689c297a26499d75c.tar.gz
upstream-67a7daa938671a5c7006e5d689c297a26499d75c.tar.bz2
upstream-67a7daa938671a5c7006e5d689c297a26499d75c.zip
mac80211: update to wireless-testing 2016-06-20
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches/306-ath10k-Ensure-peer_map-references-are-cleaned-up.patch')
-rw-r--r--package/kernel/mac80211/patches/306-ath10k-Ensure-peer_map-references-are-cleaned-up.patch60
1 files changed, 0 insertions, 60 deletions
diff --git a/package/kernel/mac80211/patches/306-ath10k-Ensure-peer_map-references-are-cleaned-up.patch b/package/kernel/mac80211/patches/306-ath10k-Ensure-peer_map-references-are-cleaned-up.patch
deleted file mode 100644
index 2979b4b57e..0000000000
--- a/package/kernel/mac80211/patches/306-ath10k-Ensure-peer_map-references-are-cleaned-up.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From: Ben Greear <greearb@candelatech.com>
-Date: Fri, 1 Apr 2016 14:12:09 -0700
-Subject: [PATCH] ath10k: Ensure peer_map references are cleaned up.
-
-While debugging OS crashes due to firmware crashes, I enabled
-kasan, and it noticed that peer objects were being used-after-freed.
-
-Looks like there are two places we could be leaving stale references
-in the peer-map, so clean that up.
-
-Signed-off-by: Ben Greear <greearb@candelatech.com>
----
-
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -773,6 +773,7 @@ static void ath10k_peer_cleanup(struct a
- {
- struct ath10k_peer *peer, *tmp;
- int peer_id;
-+ int i;
-
- lockdep_assert_held(&ar->conf_mutex);
-
-@@ -789,6 +790,17 @@ static void ath10k_peer_cleanup(struct a
- ar->peer_map[peer_id] = NULL;
- }
-
-+ /* Double check that peer is properly un-referenced from
-+ * the peer_map
-+ */
-+ for (i = 0; i < ARRAY_SIZE(ar->peer_map); i++) {
-+ if (ar->peer_map[i] == peer) {
-+ ath10k_warn(ar, "removing stale peer_map entry for %pM (ptr %p idx %d)\n",
-+ peer->addr, peer, i);
-+ ar->peer_map[i] = NULL;
-+ }
-+ }
-+
- list_del(&peer->list);
- kfree(peer);
- ar->num_peers--;
-@@ -799,6 +811,7 @@ static void ath10k_peer_cleanup(struct a
- static void ath10k_peer_cleanup_all(struct ath10k *ar)
- {
- struct ath10k_peer *peer, *tmp;
-+ int i;
-
- lockdep_assert_held(&ar->conf_mutex);
-
-@@ -807,6 +820,10 @@ static void ath10k_peer_cleanup_all(stru
- list_del(&peer->list);
- kfree(peer);
- }
-+
-+ for (i = 0; i < ARRAY_SIZE(ar->peer_map); i++)
-+ ar->peer_map[i] = NULL;
-+
- spin_unlock_bh(&ar->data_lock);
-
- ar->num_peers = 0;