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: next-20130218~68^2~93 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=6d1ccff62780;p=karo-tx-linux.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 65da698c500b..2f31bf97ba65 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. */