ravb: Double free on error in ravb_start_xmit()
If skb_put_padto() fails then it frees the skb. I shifted that code up a bit to make my error handling a little simpler. Fixes: a0d2f20650e8 ("Renesas Ethernet AVB PTP clock driver") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
b40c5f4fde
commit
9199cb7677
@ -1516,11 +1516,12 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
|||||||
spin_unlock_irqrestore(&priv->lock, flags);
|
spin_unlock_irqrestore(&priv->lock, flags);
|
||||||
return NETDEV_TX_BUSY;
|
return NETDEV_TX_BUSY;
|
||||||
}
|
}
|
||||||
entry = priv->cur_tx[q] % (priv->num_tx_ring[q] * NUM_TX_DESC);
|
|
||||||
priv->tx_skb[q][entry / NUM_TX_DESC] = skb;
|
|
||||||
|
|
||||||
if (skb_put_padto(skb, ETH_ZLEN))
|
if (skb_put_padto(skb, ETH_ZLEN))
|
||||||
goto drop;
|
goto exit;
|
||||||
|
|
||||||
|
entry = priv->cur_tx[q] % (priv->num_tx_ring[q] * NUM_TX_DESC);
|
||||||
|
priv->tx_skb[q][entry / NUM_TX_DESC] = skb;
|
||||||
|
|
||||||
buffer = PTR_ALIGN(priv->tx_align[q], DPTR_ALIGN) +
|
buffer = PTR_ALIGN(priv->tx_align[q], DPTR_ALIGN) +
|
||||||
entry / NUM_TX_DESC * DPTR_ALIGN;
|
entry / NUM_TX_DESC * DPTR_ALIGN;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user