Peter Zijlstra <pet...@infradead.org> wrote: > > + if (conn->proto.index_key < k.index_key) > > + p = p->rb_left; > > + else if (conn->proto.index_key > k.index_key) > > + p = p->rb_right; > > You still very much need rcu_dereference() for both left and right > pointers. As well as the first p load.
Bah... Yes. Good point. > > + rb_link_node(&conn->service_node, parent, pp); > > You want rb_link_node_rcu() here. Should there be an rb_replace_node_rcu() also? David