aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-09-01 18:06:39 -0700
committerDavid S. Miller <davem@davemloft.net>2010-09-01 19:17:34 -0700
commit87f94b4e91dc042620c527f3c30c37e5127ef757 (patch)
treee9e3229e7e25f41cf83cfa782dd6dd47299bc34c
parent24cd804d1dc60a74c53da983094df3516500c276 (diff)
downloadkernel_samsung_aries-87f94b4e91dc042620c527f3c30c37e5127ef757.zip
kernel_samsung_aries-87f94b4e91dc042620c527f3c30c37e5127ef757.tar.gz
kernel_samsung_aries-87f94b4e91dc042620c527f3c30c37e5127ef757.tar.bz2
bridge: Clear INET control block of SKBs passed into ip_fragment().
In a similar vain to commit 17762060c25590bfddd68cc1131f28ec720f405f ("bridge: Clear IPCB before possible entry into IP stack") Any time we call into the IP stack we have to make sure the state there is as expected by the ipv4 code. With help from Eric Dumazet and Herbert Xu. Reported-by: Bandan Das <bandan.das@stratus.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/bridge/br_netfilter.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index 5ed00bd..137f232 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -761,9 +761,11 @@ static int br_nf_dev_queue_xmit(struct sk_buff *skb)
{
if (skb->nfct != NULL && skb->protocol == htons(ETH_P_IP) &&
skb->len + nf_bridge_mtu_reduction(skb) > skb->dev->mtu &&
- !skb_is_gso(skb))
+ !skb_is_gso(skb)) {
+ /* BUG: Should really parse the IP options here. */
+ memset(IPCB(skb), 0, sizeof(struct inet_skb_parm));
return ip_fragment(skb, br_dev_queue_push_xmit);
- else
+ } else
return br_dev_queue_push_xmit(skb);
}
#else