RDMA/ocrdma: Don't sleep in atomic notifier handler
authorSasha Levin <levinsasha928@gmail.com>
Sat, 28 Apr 2012 05:40:01 +0000 (07:40 +0200)
committerRoland Dreier <roland@purestorage.com>
Tue, 8 May 2012 18:17:48 +0000 (11:17 -0700)
commit3e4d60a82e7ab4cd6e212b6834c6a48c79731957
tree9e03784ae5e92144ac5b19a8e76d0342118162c9
parentc592c42331f685b73f19ee54cfebfac0084f6e93
RDMA/ocrdma: Don't sleep in atomic notifier handler

Events sent to ocrdma_inet6addr_event() are sent from an atomic context,
therefore we can't try to lock a mutex within the notifier callback.

We could just switch the mutex to a spinlock since all it does it
protect a list, but I've gone ahead and switched the list to use RCU
instead.  I couldn't fully test it since I don't have IB hardware, so
if it doesn't fully work for some reason let me know and I'll switch
it back to using a spinlock.

Signed-off-by: Sasha Levin <levinsasha928@gmail.com>
[ Fixed locking in ocrdma_add().  - Roland ]

Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/hw/ocrdma/ocrdma.h
drivers/infiniband/hw/ocrdma/ocrdma_main.c