aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac802154
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac802154')
-rw-r--r--net/mac802154/rx.c5
-rw-r--r--net/mac802154/tx.c15
-rw-r--r--net/mac802154/wpan.c10
3 files changed, 16 insertions, 14 deletions
diff --git a/net/mac802154/rx.c b/net/mac802154/rx.c
index 7f820a108a9c..a14cf9ede171 100644
--- a/net/mac802154/rx.c
+++ b/net/mac802154/rx.c
@@ -86,9 +86,8 @@ fail:
86static void mac802154_rx_worker(struct work_struct *work) 86static void mac802154_rx_worker(struct work_struct *work)
87{ 87{
88 struct rx_work *rw = container_of(work, struct rx_work, work); 88 struct rx_work *rw = container_of(work, struct rx_work, work);
89 struct sk_buff *skb = rw->skb;
90 89
91 mac802154_subif_rx(rw->dev, skb, rw->lqi); 90 mac802154_subif_rx(rw->dev, rw->skb, rw->lqi);
92 kfree(rw); 91 kfree(rw);
93} 92}
94 93
@@ -101,7 +100,7 @@ ieee802154_rx_irqsafe(struct ieee802154_dev *dev, struct sk_buff *skb, u8 lqi)
101 if (!skb) 100 if (!skb)
102 return; 101 return;
103 102
104 work = kzalloc(sizeof(struct rx_work), GFP_ATOMIC); 103 work = kzalloc(sizeof(*work), GFP_ATOMIC);
105 if (!work) 104 if (!work)
106 return; 105 return;
107 106
diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c
index 8124353646ae..fdf4c0e67259 100644
--- a/net/mac802154/tx.c
+++ b/net/mac802154/tx.c
@@ -89,8 +89,7 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb,
89 89
90 if (!(priv->phy->channels_supported[page] & (1 << chan))) { 90 if (!(priv->phy->channels_supported[page] & (1 << chan))) {
91 WARN_ON(1); 91 WARN_ON(1);
92 kfree_skb(skb); 92 goto err_tx;
93 return NETDEV_TX_OK;
94 } 93 }
95 94
96 mac802154_monitors_rx(mac802154_to_priv(&priv->hw), skb); 95 mac802154_monitors_rx(mac802154_to_priv(&priv->hw), skb);
@@ -103,12 +102,10 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb,
103 data[1] = crc >> 8; 102 data[1] = crc >> 8;
104 } 103 }
105 104
106 if (skb_cow_head(skb, priv->hw.extra_tx_headroom)) { 105 if (skb_cow_head(skb, priv->hw.extra_tx_headroom))
107 kfree_skb(skb); 106 goto err_tx;
108 return NETDEV_TX_OK;
109 }
110 107
111 work = kzalloc(sizeof(struct xmit_work), GFP_ATOMIC); 108 work = kzalloc(sizeof(*work), GFP_ATOMIC);
112 if (!work) { 109 if (!work) {
113 kfree_skb(skb); 110 kfree_skb(skb);
114 return NETDEV_TX_BUSY; 111 return NETDEV_TX_BUSY;
@@ -129,4 +126,8 @@ netdev_tx_t mac802154_tx(struct mac802154_priv *priv, struct sk_buff *skb,
129 queue_work(priv->dev_workqueue, &work->work); 126 queue_work(priv->dev_workqueue, &work->work);
130 127
131 return NETDEV_TX_OK; 128 return NETDEV_TX_OK;
129
130err_tx:
131 kfree_skb(skb);
132 return NETDEV_TX_OK;
132} 133}
diff --git a/net/mac802154/wpan.c b/net/mac802154/wpan.c
index d593500ceb3c..4ab86a57dca5 100644
--- a/net/mac802154/wpan.c
+++ b/net/mac802154/wpan.c
@@ -475,8 +475,7 @@ mac802154_subif_frame(struct mac802154_sub_if_data *sdata, struct sk_buff *skb,
475 rc = mac802154_llsec_decrypt(&sdata->sec, skb); 475 rc = mac802154_llsec_decrypt(&sdata->sec, skb);
476 if (rc) { 476 if (rc) {
477 pr_debug("decryption failed: %i\n", rc); 477 pr_debug("decryption failed: %i\n", rc);
478 kfree_skb(skb); 478 goto fail;
479 return NET_RX_DROP;
480 } 479 }
481 480
482 sdata->dev->stats.rx_packets++; 481 sdata->dev->stats.rx_packets++;
@@ -488,9 +487,12 @@ mac802154_subif_frame(struct mac802154_sub_if_data *sdata, struct sk_buff *skb,
488 default: 487 default:
489 pr_warn("ieee802154: bad frame received (type = %d)\n", 488 pr_warn("ieee802154: bad frame received (type = %d)\n",
490 mac_cb(skb)->type); 489 mac_cb(skb)->type);
491 kfree_skb(skb); 490 goto fail;
492 return NET_RX_DROP;
493 } 491 }
492
493fail:
494 kfree_skb(skb);
495 return NET_RX_DROP;
494} 496}
495 497
496static void mac802154_print_addr(const char *name, 498static void mac802154_print_addr(const char *name,