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>

+4 -2
+4 -2
net/bridge/br_netfilter.c
··· 761 { 762 if (skb->nfct != NULL && skb->protocol == htons(ETH_P_IP) && 763 skb->len + nf_bridge_mtu_reduction(skb) > skb->dev->mtu && 764 - !skb_is_gso(skb)) 765 return ip_fragment(skb, br_dev_queue_push_xmit); 766 - else 767 return br_dev_queue_push_xmit(skb); 768 } 769 #else
··· 761 { 762 if (skb->nfct != NULL && skb->protocol == htons(ETH_P_IP) && 763 skb->len + nf_bridge_mtu_reduction(skb) > skb->dev->mtu && 764 + !skb_is_gso(skb)) { 765 + /* BUG: Should really parse the IP options here. */ 766 + memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); 767 return ip_fragment(skb, br_dev_queue_push_xmit); 768 + } else 769 return br_dev_queue_push_xmit(skb); 770 } 771 #else