On Tue, Jun 17, 2014 at 06:04:09PM -0500, Dave Chiluk wrote: > From: Wei-Chun Chao <weichunc@xxxxxxxxxxxx> > > This patch fixes a kernel BUG_ON in skb_segment. It is hit when > testing two VMs on openvswitch with one VM acting as VXLAN gateway. > > During VXLAN packet GSO, skb_segment is called with skb->data > pointing to inner TCP payload. skb_segment calls skb_network_protocol > to retrieve the inner protocol. skb_network_protocol actually expects > skb->data to point to MAC and it calls pskb_may_pull with ETH_HLEN. > This ends up pulling in ETH_HLEN data from header tail. As a result, > pskb_trim logic is skipped and BUG_ON is hit later. > > Move skb_push in front of skb_network_protocol so that skb->data > lines up properly. > > kernel BUG at net/core/skbuff.c:2999! > Call Trace: > [<ffffffff816ac412>] tcp_gso_segment+0x122/0x410 > [<ffffffff816bc74c>] inet_gso_segment+0x13c/0x390 > [<ffffffff8164b39b>] skb_mac_gso_segment+0x9b/0x170 > [<ffffffff816b3658>] skb_udp_tunnel_segment+0xd8/0x390 > [<ffffffff816b3c00>] udp4_ufo_fragment+0x120/0x140 > [<ffffffff816bc74c>] inet_gso_segment+0x13c/0x390 > [<ffffffff8109d742>] ? default_wake_function+0x12/0x20 > [<ffffffff8164b39b>] skb_mac_gso_segment+0x9b/0x170 > [<ffffffff8164b4d0>] __skb_gso_segment+0x60/0xc0 > [<ffffffff8164b6b3>] dev_hard_start_xmit+0x183/0x550 > [<ffffffff8166c91e>] sch_direct_xmit+0xfe/0x1d0 > [<ffffffff8164bc94>] __dev_queue_xmit+0x214/0x4f0 > [<ffffffff8164bf90>] dev_queue_xmit+0x10/0x20 > [<ffffffff81687edb>] ip_finish_output+0x66b/0x890 > [<ffffffff81688a58>] ip_output+0x58/0x90 > [<ffffffff816c628f>] ? fib_table_lookup+0x29f/0x350 > [<ffffffff816881c9>] ip_local_out_sk+0x39/0x50 > [<ffffffff816cbfad>] iptunnel_xmit+0x10d/0x130 > [<ffffffffa0212200>] vxlan_xmit_skb+0x1d0/0x330 [vxlan] > [<ffffffffa02a3919>] vxlan_tnl_send+0x129/0x1a0 [openvswitch] > [<ffffffffa02a2cd6>] ovs_vport_send+0x26/0xa0 [openvswitch] > [<ffffffffa029931e>] do_output+0x2e/0x50 [openvswitch] > > Signed-off-by: Wei-Chun Chao <weichunc@xxxxxxxxxxxx> > Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx> > --- > net/core/skbuff.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read Documentation/stable_kernel_rules.txt for how to do this properly. </formletter> -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html