diff options
Diffstat (limited to 'drivers/net/ethernet/renesas/ravb_main.c')
-rw-r--r-- | drivers/net/ethernet/renesas/ravb_main.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index ef8f08931fe8..6cacd5e893ac 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c | |||
@@ -1,7 +1,7 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | 1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* Renesas Ethernet AVB device driver | 2 | /* Renesas Ethernet AVB device driver |
3 | * | 3 | * |
4 | * Copyright (C) 2014-2015 Renesas Electronics Corporation | 4 | * Copyright (C) 2014-2019 Renesas Electronics Corporation |
5 | * Copyright (C) 2015 Renesas Solutions Corp. | 5 | * Copyright (C) 2015 Renesas Solutions Corp. |
6 | * Copyright (C) 2015-2016 Cogent Embedded, Inc. <source@cogentembedded.com> | 6 | * Copyright (C) 2015-2016 Cogent Embedded, Inc. <source@cogentembedded.com> |
7 | * | 7 | * |
@@ -513,7 +513,10 @@ static void ravb_get_tx_tstamp(struct net_device *ndev) | |||
513 | kfree(ts_skb); | 513 | kfree(ts_skb); |
514 | if (tag == tfa_tag) { | 514 | if (tag == tfa_tag) { |
515 | skb_tstamp_tx(skb, &shhwtstamps); | 515 | skb_tstamp_tx(skb, &shhwtstamps); |
516 | dev_consume_skb_any(skb); | ||
516 | break; | 517 | break; |
518 | } else { | ||
519 | dev_kfree_skb_any(skb); | ||
517 | } | 520 | } |
518 | } | 521 | } |
519 | ravb_modify(ndev, TCCR, TCCR_TFR, TCCR_TFR); | 522 | ravb_modify(ndev, TCCR, TCCR_TFR, TCCR_TFR); |
@@ -1564,7 +1567,7 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev) | |||
1564 | } | 1567 | } |
1565 | goto unmap; | 1568 | goto unmap; |
1566 | } | 1569 | } |
1567 | ts_skb->skb = skb; | 1570 | ts_skb->skb = skb_get(skb); |
1568 | ts_skb->tag = priv->ts_skb_tag++; | 1571 | ts_skb->tag = priv->ts_skb_tag++; |
1569 | priv->ts_skb_tag &= 0x3ff; | 1572 | priv->ts_skb_tag &= 0x3ff; |
1570 | list_add_tail(&ts_skb->list, &priv->ts_skb_list); | 1573 | list_add_tail(&ts_skb->list, &priv->ts_skb_list); |
@@ -1693,6 +1696,7 @@ static int ravb_close(struct net_device *ndev) | |||
1693 | /* Clear the timestamp list */ | 1696 | /* Clear the timestamp list */ |
1694 | list_for_each_entry_safe(ts_skb, ts_skb2, &priv->ts_skb_list, list) { | 1697 | list_for_each_entry_safe(ts_skb, ts_skb2, &priv->ts_skb_list, list) { |
1695 | list_del(&ts_skb->list); | 1698 | list_del(&ts_skb->list); |
1699 | kfree_skb(ts_skb->skb); | ||
1696 | kfree(ts_skb); | 1700 | kfree(ts_skb); |
1697 | } | 1701 | } |
1698 | 1702 | ||