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?