]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - net/xfrm/xfrm_device.c
Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
[linux.git] / net / xfrm / xfrm_device.c
index 189ef15acbbc3b8b09505435bebed1f14ca90c76..50f567a88f450f702b957628fbfbed3835a896a3 100644 (file)
@@ -78,7 +78,7 @@ struct sk_buff *validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t featur
        int err;
        unsigned long flags;
        struct xfrm_state *x;
-       struct sk_buff *skb2;
+       struct sk_buff *skb2, *nskb;
        struct softnet_data *sd;
        netdev_features_t esp_features = features;
        struct xfrm_offload *xo = xfrm_offload(skb);
@@ -148,11 +148,7 @@ struct sk_buff *validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t featur
                return skb;
        }
 
-       skb2 = skb;
-
-       do {
-               struct sk_buff *nskb = skb2->next;
-
+       skb_list_walk_safe(skb, skb2, nskb) {
                esp_features |= skb->dev->gso_partial_features;
                skb_mark_not_on_list(skb2);
 
@@ -176,14 +172,11 @@ struct sk_buff *validate_xmit_xfrm(struct sk_buff *skb, netdev_features_t featur
                        if (!skb)
                                return NULL;
 
-                       goto skip_push;
+                       continue;
                }
 
                skb_push(skb2, skb2->data - skb_mac_header(skb2));
-
-skip_push:
-               skb2 = nskb;
-       } while (skb2);
+       }
 
        return skb;
 }