net: l2tp_eth: fix l2tp_eth_dev_xmit race

Its illegal to dereference skb after giving it to l2tp_xmit_skb()
as it might be already freed/reused.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet 2012-06-25 00:45:14 +00:00 committed by David S. Miller
parent 044ca2a5f2
commit aa214de059

View file

@ -88,12 +88,12 @@ static int l2tp_eth_dev_xmit(struct sk_buff *skb, struct net_device *dev)
struct l2tp_eth *priv = netdev_priv(dev);
struct l2tp_session *session = priv->session;
l2tp_xmit_skb(session, skb, session->hdr_len);
dev->stats.tx_bytes += skb->len;
dev->stats.tx_packets++;
return 0;
l2tp_xmit_skb(session, skb, session->hdr_len);
return NETDEV_TX_OK;
}
static struct net_device_ops l2tp_eth_netdev_ops = {