From: Claudiu Manoil <claudiu.man...@nxp.com>

[ Upstream commit f4a0be84d73ec648628bf8094600ceb73cb6073f ]

For the unlikely case of TxBD extensions (i.e. ptp)
the driver tries to unmap the tx_swbd corresponding
to the extension, which is bogus as it has no buffer
attached.

Signed-off-by: Claudiu Manoil <claudiu.man...@nxp.com>
Signed-off-by: David S. Miller <da...@davemloft.net>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/net/ethernet/freescale/enetc/enetc.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/freescale/enetc/enetc.c 
b/drivers/net/ethernet/freescale/enetc/enetc.c
index 5bb9eb35d76d..491475d87736 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc.c
@@ -313,7 +313,9 @@ static bool enetc_clean_tx_ring(struct enetc_bdr *tx_ring, 
int napi_budget)
        while (bds_to_clean && tx_frm_cnt < ENETC_DEFAULT_TX_WORK) {
                bool is_eof = !!tx_swbd->skb;
 
-               enetc_unmap_tx_buff(tx_ring, tx_swbd);
+               if (likely(tx_swbd->dma))
+                       enetc_unmap_tx_buff(tx_ring, tx_swbd);
+
                if (is_eof) {
                        napi_consume_skb(tx_swbd->skb, napi_budget);
                        tx_swbd->skb = NULL;
-- 
2.20.1

Reply via email to