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>
This commit is contained in:
Sasha Levin
2012-04-28 07:40:01 +02:00
committed by Roland Dreier
orang tua c592c42331
melakukan 3e4d60a82e
2 mengubah file dengan 23 tambahan dan 16 penghapusan

Melihat File

@@ -168,6 +168,7 @@ struct ocrdma_dev {
struct be_dev_info nic_info;
struct list_head entry;
struct rcu_head rcu;
int id;
};