aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSujith <Sujith.Manoharan@atheros.com>2010-04-06 15:28:19 +0530
committerJohn W. Linville <linville@tuxdriver.com>2010-04-08 15:24:11 -0400
commitf984d94c500c79048b33ab14923dfcec336d9968 (patch)
tree3a955bb6f52f2824de4b3bf819e71992a18e54fe /drivers
parent6f0f2669f508fb239a0f589a8b453dbe22112bf9 (diff)
downloadkernel_samsung_smdk4412-f984d94c500c79048b33ab14923dfcec336d9968.zip
kernel_samsung_smdk4412-f984d94c500c79048b33ab14923dfcec336d9968.tar.gz
kernel_samsung_smdk4412-f984d94c500c79048b33ab14923dfcec336d9968.tar.bz2
ath9k_htc: Fix HTC layer memleak
Messages that are generated by the HTC layer don't have any TX callback endpoints assigned to them. Consequently, the allocated SKBs are never freed. Fix this issue by handling this case in the HTC layer itself. Signed-off-by: Sujith <Sujith.Manoharan@atheros.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/ath/ath9k/htc_hst.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c b/drivers/net/wireless/ath/ath9k/htc_hst.c
index 30f608b..24d7b88 100644
--- a/drivers/net/wireless/ath/ath9k/htc_hst.c
+++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
@@ -326,11 +326,13 @@ void ath9k_htc_txcompletion_cb(struct htc_target *htc_handle,
if (htc_handle->htc_flags & HTC_OP_CONFIG_PIPE_CREDITS) {
complete(&htc_handle->cmd_wait);
htc_handle->htc_flags &= ~HTC_OP_CONFIG_PIPE_CREDITS;
+ goto ret;
}
if (htc_handle->htc_flags & HTC_OP_START_WAIT) {
complete(&htc_handle->cmd_wait);
htc_handle->htc_flags &= ~HTC_OP_START_WAIT;
+ goto ret;
}
if (skb) {
@@ -343,6 +345,11 @@ void ath9k_htc_txcompletion_cb(struct htc_target *htc_handle,
htc_hdr->endpoint_id, txok);
}
}
+
+ return;
+ret:
+ /* HTC-generated packets are freed here. */
+ dev_kfree_skb_any(skb);
}
/*