doc: Change "-" to "\-" in appropriate places.
[openvswitch] / datapath / vport-gre.c
index cd0f3e8dce46c1936cd0dd8a87f19deb7b2fcadc..d4a5c5ec66fc3f4f5efb69bd0d88c67db6a1863c 100644 (file)
@@ -557,9 +557,8 @@ send_frag_needed(struct vport *vport, const struct mutable_config *mutable,
 static struct sk_buff *
 check_headroom(struct sk_buff *skb, int headroom)
 {
-       if (skb_headroom(skb) < headroom ||
-           (skb_cloned(skb) && !skb_clone_writable(skb, 0))) {
-               struct sk_buff *nskb = skb_realloc_headroom(skb, headroom);
+       if (skb_headroom(skb) < headroom || skb_header_cloned(skb)) {
+               struct sk_buff *nskb = skb_realloc_headroom(skb, max(headroom, 64));
                if (!nskb) {
                        kfree_skb(skb);
                        return ERR_PTR(-ENOMEM);
@@ -734,7 +733,7 @@ static struct sk_buff *
 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;
@@ -1132,7 +1131,9 @@ gre_send(struct vport *vport, struct sk_buff *skb)
        }
 
        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))) {