| From: Varka Bhadram <varkab@cdac.in> |
| Date: Mon, 11 Aug 2014 13:25:10 +0200 |
| Subject: mac802154: common tx error path |
| |
| commit f55889128a776b51581394b20abd0b470304cf95 upstream. |
| |
| This patch introduce the common error path on failure of Tx by |
| inserting the label 'err_tx'. |
| |
| Signed-off-by: Varka Bhadram <varkab@cdac.in> |
| Signed-off-by: Alexander Aring <alex.aring@gmail.com> |
| Signed-off-by: Marcel Holtmann <marcel@holtmann.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| net/mac802154/tx.c | 15 ++++++++------- |
| 1 file changed, 8 insertions(+), 7 deletions(-) |
| |
| --- a/net/mac802154/tx.c |
| +++ b/net/mac802154/tx.c |
| @@ -89,8 +89,7 @@ netdev_tx_t mac802154_tx(struct mac80215 |
| |
| if (!(priv->phy->channels_supported[page] & (1 << chan))) { |
| WARN_ON(1); |
| - kfree_skb(skb); |
| - return NETDEV_TX_OK; |
| + goto err_tx; |
| } |
| |
| mac802154_monitors_rx(mac802154_to_priv(&priv->hw), skb); |
| @@ -102,12 +101,10 @@ netdev_tx_t mac802154_tx(struct mac80215 |
| data[1] = crc >> 8; |
| } |
| |
| - if (skb_cow_head(skb, priv->hw.extra_tx_headroom)) { |
| - kfree_skb(skb); |
| - return NETDEV_TX_OK; |
| - } |
| + if (skb_cow_head(skb, priv->hw.extra_tx_headroom)) |
| + goto err_tx; |
| |
| - work = kzalloc(sizeof(struct xmit_work), GFP_ATOMIC); |
| + work = kzalloc(sizeof(*work), GFP_ATOMIC); |
| if (!work) { |
| kfree_skb(skb); |
| return NETDEV_TX_BUSY; |
| @@ -128,4 +125,8 @@ netdev_tx_t mac802154_tx(struct mac80215 |
| queue_work(priv->dev_workqueue, &work->work); |
| |
| return NETDEV_TX_OK; |
| + |
| +err_tx: |
| + kfree_skb(skb); |
| + return NETDEV_TX_OK; |
| } |