summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2011-01-03 04:16:28 +0000
committerDavid S. Miller <davem@davemloft.net>2011-01-03 12:09:33 -0800
commite6f26129ebbb0071016e2526036f42036ccf30e1 (patch)
treeba75f3014c9251ceee17c69bd6602603337c6b2e
parent9d89081d698132b5f964aea88112f76492563ee9 (diff)
downloadlinux-e6f26129ebbb0071016e2526036f42036ccf30e1.tar.gz
linux-e6f26129ebbb0071016e2526036f42036ccf30e1.tar.bz2
linux-e6f26129ebbb0071016e2526036f42036ccf30e1.zip
bridge: stp: ensure mac header is set
commit bf9ae5386bca8836c16e69ab8fdbe46767d7452a (llc: use dev_hard_header) removed the skb_reset_mac_header call from llc_mac_hdr_init. This seems fine itself, but br_send_bpdu() invokes ebtables LOCAL_OUT. We oops in ebt_basic_match() because it assumes eth_hdr(skb) returns a meaningful result. Cc: acme@ghostprotocols.net References: https://bugzilla.kernel.org/show_bug.cgi?id=24532 Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/bridge/br_stp_bpdu.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/bridge/br_stp_bpdu.c b/net/bridge/br_stp_bpdu.c
index 35cf27087b56..e3d7aefa9181 100644
--- a/net/bridge/br_stp_bpdu.c
+++ b/net/bridge/br_stp_bpdu.c
@@ -50,6 +50,8 @@ static void br_send_bpdu(struct net_bridge_port *p,
llc_mac_hdr_init(skb, p->dev->dev_addr, p->br->group_addr);
+ skb_reset_mac_header(skb);
+
NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_OUT, skb, NULL, skb->dev,
dev_queue_xmit);
}