mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-12-25 06:14:37 +02:00
ath9k: fix another buffer leak in the aggregation code
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22360 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
b024d6ea6b
commit
cbab8bf1df
32
package/mac80211/patches/520-ath9k_leak_fix.patch
Normal file
32
package/mac80211/patches/520-ath9k_leak_fix.patch
Normal file
@ -0,0 +1,32 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
@@ -518,6 +518,14 @@ static void ath_tx_complete_aggr(struct
|
||||
bf = bf_next;
|
||||
}
|
||||
|
||||
+ /* prepend un-acked frames to the beginning of the pending frame queue */
|
||||
+ if (!list_empty(&bf_pending)) {
|
||||
+ spin_lock_bh(&txq->axq_lock);
|
||||
+ list_splice(&bf_pending, &tid->buf_q);
|
||||
+ ath_tx_queue_tid(txq, tid);
|
||||
+ spin_unlock_bh(&txq->axq_lock);
|
||||
+ }
|
||||
+
|
||||
if (tid->state & AGGR_CLEANUP) {
|
||||
if (tid->baw_head == tid->baw_tail) {
|
||||
tid->state &= ~AGGR_ADDBA_COMPLETE;
|
||||
@@ -530,14 +538,6 @@ static void ath_tx_complete_aggr(struct
|
||||
return;
|
||||
}
|
||||
|
||||
- /* prepend un-acked frames to the beginning of the pending frame queue */
|
||||
- if (!list_empty(&bf_pending)) {
|
||||
- spin_lock_bh(&txq->axq_lock);
|
||||
- list_splice(&bf_pending, &tid->buf_q);
|
||||
- ath_tx_queue_tid(txq, tid);
|
||||
- spin_unlock_bh(&txq->axq_lock);
|
||||
- }
|
||||
-
|
||||
rcu_read_unlock();
|
||||
|
||||
if (needreset)
|
Loading…
Reference in New Issue
Block a user