From: Eric Dumazet Date: Tue, 5 Feb 2013 20:22:20 +0000 (+0000) Subject: net: reset mac header in dev_start_xmit() X-Git-Tag: v3.9-rc1~139^2~144 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6d1ccff627806829c46091bd9d9835302a3fbf5f;p=platform%2Fkernel%2Flinux-stable.git net: reset mac header in dev_start_xmit() On 64 bit arches : There is a off-by-one error in qdisc_pkt_len_init() because mac_header is not set in xmit path. skb_mac_header() returns an out of bound value that was harmless because hdr_len is an 'unsigned int' On 32bit arches, the error is abysmal. This patch is also a prereq for "macvlan: add multicast filter" Signed-off-by: Eric Dumazet Cc: Ben Greear Signed-off-by: David S. Miller --- diff --git a/net/core/dev.c b/net/core/dev.c index 65da698..2f31bf9 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2835,6 +2835,8 @@ int dev_queue_xmit(struct sk_buff *skb) struct Qdisc *q; int rc = -ENOMEM; + skb_reset_mac_header(skb); + /* Disable soft irqs for various locks below. Also * stops preemption for RCU. */