handle_gso(struct sk_buff *skb)
{
if (skb_is_gso(skb)) {
- struct sk_buff *nskb = skb_gso_segment(skb, NETIF_F_SG);
+ struct sk_buff *nskb = skb_gso_segment(skb, 0);
dev_kfree_skb(skb);
return nskb;
}
forward_ip_summed(skb);
- vswitch_skb_checksum_setup(skb);
+
+ if (unlikely(vswitch_skb_checksum_setup(skb)))
+ goto error_free;
skb = handle_gso(skb);
if (unlikely(IS_ERR(skb))) {