From: Xin Long <lucien....@gmail.com>
Date: Fri, 17 Feb 2017 16:35:24 +0800


> +     list = rhltable_lookup(&sctp_transport_hashtable, &arg,
> +                            sctp_hash_params);
> +
> +     rhl_for_each_entry_rcu(transport, tmp, list, node)
> +             if (transport->asoc->ep == t->asoc->ep) {
> +                     err = -EEXIST;
> +                     goto out;
> +             }
> +
>       err = rhltable_insert_key(&sctp_transport_hashtable, &arg,
>                                 &t->node, sctp_hash_params);
> +
> +out:

Well, what if another thread of control inserts a matching transport
after you've checked the list but before rhltable_insert_key() does
it's work?

What write side lock is being held to protect the table from
modifications here?

Reply via email to