sunvnet: failed trigger should not cause BUG_ON()
Subsystems (2)
PATCH 1/1 sunvnet: failed trigger should not cause BUG_ON()
An error return from __vnet_tx_trigger() sets the TX descriptor to VIO_DESC_FREE while leaving port->tx_bufs[txi].skb set. This leads to a BUG_ON() the next time this descriptor is used.
This patch frees the pending skb when getting a trigger error to match the VIO_DESC_FREE state.
--- drivers/net/ethernet/sun/sunvnet.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
drivers/net/ethernet/sun/sunvnet.c +2 -0
@@ -1414,6 +1414,8 @@ static int vnet_start_xmit(struct sk_buff *skb, struct net_device *dev)if (unlikely (err <0 )) {netdev_info (dev,"TX trigger error %d\n" , err); d->hdr.state =VIO_DESC_FREE ; + skb = port->tx_bufs[txi].skb; + port->tx_bufs[txi].skb =NULL ; dev->stats.tx_carrier_errors++; goto out_dropped; }
Signature · 1 line
1.7.1
Quoted 8 lines · David L Stevens
An error return from
__vnet_tx_trigger()sets the TX descriptor toVIO_DESC_FREEwhile leaving port->tx_bufs[txi].skb set. This leads to aBUG_ON()the next time this descriptor is used.This patch frees the pending skb when getting a trigger error to match the
VIO_DESC_FREEstate.Signed-off-by David L Stevens <[email protected]>
From: David L Stevens <[email protected]>
Date: Thu, 19 Feb 2015 13:15:49 -0500
Quoted 8 lines
An error return from
__vnet_tx_trigger()sets the TX descriptor toVIO_DESC_FREEwhile leaving port->tx_bufs[txi].skb set. This leads to aBUG_ON()the next time this descriptor is used.This patch frees the pending skb when getting a trigger error to match the
VIO_DESC_FREEstate.Signed-off-by David L Stevens <[email protected]>
Applied, thanks David.