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

Commit 73151ce3 authored by Richard Cochran's avatar Richard Cochran Committed by David S. Miller
Browse files

mv643xx_eth: fix race in trasmit path.



Because the socket buffer is freed in the completion interrupt, it is not
safe to access it after submitting it to the hardware.

Signed-off-by: default avatarRichard Cochran <richard.cochran@omicron.at>
Acked-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e00f85be
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -859,7 +859,7 @@ static int txq_submit_skb(struct tx_queue *txq, struct sk_buff *skb)
static netdev_tx_t mv643xx_eth_xmit(struct sk_buff *skb, struct net_device *dev)
{
	struct mv643xx_eth_private *mp = netdev_priv(dev);
	int queue;
	int length, queue;
	struct tx_queue *txq;
	struct netdev_queue *nq;

@@ -881,10 +881,12 @@ static netdev_tx_t mv643xx_eth_xmit(struct sk_buff *skb, struct net_device *dev)
		return NETDEV_TX_OK;
	}

	length = skb->len;

	if (!txq_submit_skb(txq, skb)) {
		int entries_left;

		txq->tx_bytes += skb->len;
		txq->tx_bytes += length;
		txq->tx_packets++;

		entries_left = txq->tx_ring_size - txq->tx_desc_count;