Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bb39b743 authored by David L Stevens's avatar David L Stevens Committed by David S. Miller
Browse files

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.

Signed-off-by: default avatarDavid L Stevens <david.stevens@oracle.com>
Acked-by: default avatarSowmini Varadhan <sowmini.varadhan@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 950ddcb1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -1411,6 +1411,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;
	}