From: Eric Dumazet Date: Wed, 25 Aug 2010 23:44:35 +0000 (+0000) Subject: l2tp: test for ethernet header in l2tp_eth_dev_recv() X-Git-Tag: v2.6.35.6~65 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=2974d51279e5437f5b34a5163d1d835586488946;p=karo-tx-linux.git l2tp: test for ethernet header in l2tp_eth_dev_recv() [ Upstream commit bfc960a8eec023a170a80697fe65157cd4f44f81 ] close https://bugzilla.kernel.org/show_bug.cgi?id=16529 Before calling dev_forward_skb(), we should make sure skb head contains at least an ethernet header, even if length included in upper layer said so. Use pskb_may_pull() to make sure this ethernet header is present in skb head. Reported-by: Thomas Heil Reported-by: Ian Campbell Signed-off-by: Eric Dumazet Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c index 58c6c4cda73b..1ae697681bc7 100644 --- a/net/l2tp/l2tp_eth.c +++ b/net/l2tp/l2tp_eth.c @@ -132,7 +132,7 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb, printk("\n"); } - if (data_len < ETH_HLEN) + if (!pskb_may_pull(skb, sizeof(ETH_HLEN))) goto error; secpath_reset(skb);