OSDN Git Service

net: ipv4: use skb_list_walk_safe helper for gso segments
authorJason A. Donenfeld <Jason@zx2c4.com>
Mon, 13 Jan 2020 23:42:31 +0000 (18:42 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Jan 2020 19:48:41 +0000 (11:48 -0800)
This is a straight-forward conversion case for the new function, keeping
the flow of the existing code as intact as possible.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/ip_output.c

index 14db1e0..d848198 100644 (file)
@@ -240,8 +240,8 @@ static int ip_finish_output2(struct net *net, struct sock *sk, struct sk_buff *s
 static int ip_finish_output_gso(struct net *net, struct sock *sk,
                                struct sk_buff *skb, unsigned int mtu)
 {
+       struct sk_buff *segs, *nskb;
        netdev_features_t features;
-       struct sk_buff *segs;
        int ret = 0;
 
        /* common case: seglen is <= mtu
@@ -272,8 +272,7 @@ static int ip_finish_output_gso(struct net *net, struct sock *sk,
 
        consume_skb(skb);
 
-       do {
-               struct sk_buff *nskb = segs->next;
+       skb_list_walk_safe(segs, segs, nskb) {
                int err;
 
                skb_mark_not_on_list(segs);
@@ -281,8 +280,7 @@ static int ip_finish_output_gso(struct net *net, struct sock *sk,
 
                if (err && ret == 0)
                        ret = err;
-               segs = nskb;
-       } while (segs);
+       }
 
        return ret;
 }