msm: ipa: Fix the memory leak in error cases

Free the skb if packet is not sent to ipa hw
successfully other than TX_BUSY error cases to avoid
memory leak.

Change-Id: I012484aa92e8f25ed0ad4f6709a54f40409ab8d2
CRs-Fixed: 1077525
Signed-off-by: Sunil Paidimarri <hisunil@codeaurora.org>
This commit is contained in:
Sunil Paidimarri 2016-10-17 18:33:13 -07:00
parent 5b7da25887
commit de9d29a416
2 changed files with 10 additions and 3 deletions

View file

@ -1053,6 +1053,8 @@ static int ipa_wwan_xmit(struct sk_buff *skb, struct net_device *dev)
IPAWANDBG
("SW filtering out none QMAP packet received from %s",
current->comm);
dev_kfree_skb_any(skb);
dev->stats.tx_dropped++;
return NETDEV_TX_OK;
}
@ -1094,6 +1096,8 @@ send:
if (ret) {
pr_err("[%s] fatal: ipa rm timer request resource failed %d\n",
dev->name, ret);
dev_kfree_skb_any(skb);
dev->stats.tx_dropped++;
return -EFAULT;
}
/* IPA_RM checking end */
@ -1109,7 +1113,6 @@ send:
if (ret) {
ret = NETDEV_TX_BUSY;
dev->stats.tx_dropped++;
goto out;
}

View file

@ -1066,6 +1066,8 @@ static int ipa3_wwan_xmit(struct sk_buff *skb, struct net_device *dev)
IPAWANDBG_LOW
("SW filtering out none QMAP packet received from %s",
current->comm);
dev_kfree_skb_any(skb);
dev->stats.tx_dropped++;
return NETDEV_TX_OK;
}
@ -1077,7 +1079,8 @@ static int ipa3_wwan_xmit(struct sk_buff *skb, struct net_device *dev)
pr_err("[%s]Queue stop, send ctrl pkts\n", dev->name);
goto send;
} else {
pr_err("[%s]fatal: ipa_wwan_xmit stopped\n", dev->name);
pr_err("[%s]fatal: ipa3_wwan_xmit stopped\n",
dev->name);
return NETDEV_TX_BUSY;
}
}
@ -1107,6 +1110,8 @@ send:
if (ret) {
pr_err("[%s] fatal: ipa rm timer request resource failed %d\n",
dev->name, ret);
dev_kfree_skb_any(skb);
dev->stats.tx_dropped++;
return -EFAULT;
}
/* IPA_RM checking end */
@ -1122,7 +1127,6 @@ send:
if (ret) {
ret = NETDEV_TX_BUSY;
dev->stats.tx_dropped++;
goto out;
}