diff options
author | Florian Westphal <fw@strlen.de> | 2011-01-03 05:16:28 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-03 21:09:33 +0100 |
commit | e6f26129ebbb0071016e2526036f42036ccf30e1 (patch) | |
tree | ba75f3014c9251ceee17c69bd6602603337c6b2e | |
parent | bridge: fix br_multicast_ipv6_rcv for paged skbs (diff) | |
download | linux-e6f26129ebbb0071016e2526036f42036ccf30e1.tar.xz 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.c | 2 |
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); } |