Skip to content

Commit

Permalink
mv643xx_eth: fix race in trasmit path.
Browse files Browse the repository at this point in the history
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: Richard Cochran <richard.cochran@omicron.at>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Richard Cochran authored and David S. Miller committed Jun 21, 2011
1 parent e00f85b commit 73151ce
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions drivers/net/mv643xx_eth.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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;
Expand Down

0 comments on commit 73151ce

Please sign in to comment.