On Wed, May 27, 2015 at 12:04:29PM -0400, Doug Ledford wrote: > On Mon, 2015-05-25 at 10:54 -0600, Jason Gunthorpe wrote: > > On Wed, May 13, 2015 at 02:10:36PM +0300, Yishai Hadas wrote: > > > > > + struct srcu_struct disassociate_srcu; > > > > There is no need for rcu for this, use a rw sem. > > The rcu was used becuase it's on the hot path I assume. Perhaps, I looked at that a bit, it was used on syscall paths, but that wasn't even the big reason I made the comment.. The use of RCU is *strange*. There is no pointer, there is no call to rcu_derference. Stuff protected by the write lock is being touched without any read side locking (ie ib_uverbs_event_read sure looks funky). There is no Copy or Update phase as far as I can see. It fails two of the tests in Documentation/RCU/checklist.txt. I'm pretty sure what is intended here is that disassociated is actually an unlocked atomic boolean and the RCU is being used (abused?) to create both exclusion and a rendezvous.. I gave up at that point, if RCU is not being used properly, asking for rwsem is a way to force the author to deal with their locking sanely. Jasno -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html