diff options
Diffstat (limited to 'net/openvswitch/datapath.c')
| -rw-r--r-- | net/openvswitch/datapath.c | 11 | 
1 files changed, 4 insertions, 7 deletions
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c index e3a37d22539c..659c2a790fe7 100644 --- a/net/openvswitch/datapath.c +++ b/net/openvswitch/datapath.c @@ -321,8 +321,7 @@ static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,  	}  	/* Queue all of the segments. */ -	skb = segs; -	do { +	skb_list_walk_safe(segs, skb, nskb) {  		if (gso_type & SKB_GSO_UDP && skb != segs)  			key = &later_key; @@ -330,17 +329,15 @@ static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,  		if (err)  			break; -	} while ((skb = skb->next)); +	}  	/* Free all of the segments. */ -	skb = segs; -	do { -		nskb = skb->next; +	skb_list_walk_safe(segs, skb, nskb) {  		if (err)  			kfree_skb(skb);  		else  			consume_skb(skb); -	} while ((skb = nskb)); +	}  	return err;  }  | 
