]> git.karo-electronics.de Git - linux-beck.git/commitdiff
ath10k: plug memory leak in wmi mgmt tx worker
authorMichal Kazior <michal.kazior@tieto.com>
Mon, 28 Oct 2013 06:18:13 +0000 (07:18 +0100)
committerKalle Valo <kvalo@qca.qualcomm.com>
Wed, 30 Oct 2013 09:52:02 +0000 (11:52 +0200)
sk_buff was not freed in some cases. The patch
unifies the msdu freeing.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/mac.c
drivers/net/wireless/ath/ath10k/wmi.c

index bbb0efacfaf0f9a3041d224091a81aa75c12a2c1..f45eca0b7a4ee57090d89bf5e3a2792e1e3f8916 100644 (file)
@@ -1729,8 +1729,10 @@ void ath10k_mgmt_over_wmi_tx_work(struct work_struct *work)
                        break;
 
                ret = ath10k_wmi_mgmt_tx(ar, skb);
-               if (ret)
+               if (ret) {
                        ath10k_warn("wmi mgmt_tx failed (%d)\n", ret);
+                       ieee80211_free_txskb(ar->hw, skb);
+               }
        }
 }
 
index a796d0b9a1392cbc69d470fe8496a46114033cce..8db9db2db946596b4f05ba062d3da74e5f6d9edc 100644 (file)
@@ -674,10 +674,8 @@ int ath10k_wmi_mgmt_tx(struct ath10k *ar, struct sk_buff *skb)
 
        /* Send the management frame buffer to the target */
        ret = ath10k_wmi_cmd_send(ar, wmi_skb, ar->wmi.cmd->mgmt_tx_cmdid);
-       if (ret) {
-               dev_kfree_skb_any(skb);
+       if (ret)
                return ret;
-       }
 
        /* TODO: report tx status to mac80211 - temporary just ACK */
        info->flags |= IEEE80211_TX_STAT_ACK;