]> Pileus Git - ~andy/linux/blobdiff - net/ipv6/udp.c
udp: introduce sk_for_each_rcu_safenext()
[~andy/linux] / net / ipv6 / udp.c
index 1d9790e43dfcb977bc28ec22093b62b64c5f52df..32d914db6c4fa90e5d773fc405242ee349e83ce4 100644 (file)
@@ -98,7 +98,7 @@ static struct sock *__udp6_lib_lookup(struct net *net,
                                      int dif, struct udp_table *udptable)
 {
        struct sock *sk, *result;
-       struct hlist_node *node;
+       struct hlist_node *node, *next;
        unsigned short hnum = ntohs(dport);
        unsigned int hash = udp_hashfn(net, hnum);
        struct udp_hslot *hslot = &udptable->hash[hash];
@@ -108,7 +108,7 @@ static struct sock *__udp6_lib_lookup(struct net *net,
 begin:
        result = NULL;
        badness = -1;
-       sk_for_each_rcu(sk, node, &hslot->head) {
+       sk_for_each_rcu_safenext(sk, node, &hslot->head, next) {
                /*
                 * lockless reader, and SLAB_DESTROY_BY_RCU items:
                 * We must check this item was not moved to another chain