diff options
Diffstat (limited to 'net/mac802154')
-rw-r--r-- | net/mac802154/rx.c | 5 | ||||
-rw-r--r-- | net/mac802154/tx.c | 15 | ||||
-rw-r--r-- | net/mac802154/wpan.c | 10 |
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: | |||
86 | static void mac802154_rx_worker(struct work_struct *work) | 86 | static 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 | |||
130 | err_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 | |||
493 | fail: | ||
494 | kfree_skb(skb); | ||
495 | return NET_RX_DROP; | ||
494 | } | 496 | } |
495 | 497 | ||
496 | static void mac802154_print_addr(const char *name, | 498 | static void mac802154_print_addr(const char *name, |