Re: [PATCH] net: fix UDP tunnel GSO of frag_list GRO packets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]