X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=net%2Fcore%2Fdev.c;h=dbc8713069107b75ff43b634b3c72476323044d5;hb=396a30cce15d084b2b1a395aa6d515c3d559c674;hp=f1fe26f6645883a54126300adc030f1c3a04652d;hpb=48915c2cbc77eceec2005afb695ac658fede4e0d;p=cascardo%2Flinux.git diff --git a/net/core/dev.c b/net/core/dev.c index f1fe26f66458..dbc871306910 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4511,6 +4511,7 @@ static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff NAPI_GRO_CB(skb)->flush = 0; NAPI_GRO_CB(skb)->free = 0; NAPI_GRO_CB(skb)->encap_mark = 0; + NAPI_GRO_CB(skb)->recursion_counter = 0; NAPI_GRO_CB(skb)->is_fou = 0; NAPI_GRO_CB(skb)->is_atomic = 1; NAPI_GRO_CB(skb)->gro_remcsum_start = 0; @@ -5511,10 +5512,14 @@ struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev, { struct netdev_adjacent *lower; - lower = list_first_or_null_rcu(&dev->all_adj_list.lower, - struct netdev_adjacent, list); + lower = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); + + if (&lower->list == &dev->all_adj_list.lower) + return NULL; + + *iter = &lower->list; - return lower ? lower->dev : NULL; + return lower->dev; } EXPORT_SYMBOL(netdev_all_lower_get_next_rcu);