diff options
author | Nicolas Pitre <nicolas.pitre@linaro.org> | 2011-04-25 15:58:38 -0400 |
---|---|---|
committer | Nicolas Pitre <nicolas.pitre@linaro.org> | 2011-04-25 15:58:38 -0400 |
commit | ca1841de3a426de8cfac6ca61f0f54e6283d0653 (patch) | |
tree | fc9ca7db1f9ada5301b3684ae75cfe8470071425 /net/bridge/br_netfilter.c | |
parent | c5325bf1df96152c969b44cae2b8131be5621c47 (diff) | |
parent | 8fd62c82872a5a721c9fb0071ca0f7a49c1732e4 (diff) |
Merge commit 'v2.6.38.4' into linaro-2.6.38
Diffstat (limited to 'net/bridge/br_netfilter.c')
-rw-r--r-- | net/bridge/br_netfilter.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c index 4b5b66d07bb..333bcaa1377 100644 --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c @@ -249,11 +249,9 @@ static int br_parse_ip_options(struct sk_buff *skb) goto drop; } - /* Zero out the CB buffer if no options present */ - if (iph->ihl == 5) { - memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); + memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); + if (iph->ihl == 5) return 0; - } opt->optlen = iph->ihl*4 - sizeof(struct iphdr); if (ip_options_compile(dev_net(dev), opt, skb)) @@ -741,6 +739,9 @@ static unsigned int br_nf_forward_ip(unsigned int hook, struct sk_buff *skb, nf_bridge->mask |= BRNF_PKT_TYPE; } + if (br_parse_ip_options(skb)) + return NF_DROP; + /* The physdev module checks on this */ nf_bridge->mask |= BRNF_BRIDGED; nf_bridge->physoutdev = skb->dev; |