linux/drivers/infiniband/core
Roland Dreier 0e442afd92 IB/mad: Fix lock-lock-timer deadlock in RMPP code
Holding agent->lock across cancel_delayed_work() (which does
del_timer_sync()) in ib_cancel_rmpp_recvs() leads to lockdep reports of
possible lock-timer deadlocks if a consumer ever does something that
connects agent->lock to a lock taken in IRQ context (cf
http://marc.info/?l=linux-rdma&m=125243699026045).

Fix this by changing the list items to a new state "CANCELING" while
holding the lock, and then canceling the delayed work without holding
the lock.  If the delayed work runs after the lock is dropped, it will
see the state is CANCELING and return immediately, so the list will
stay stable while we traverse it with the lock not held.

Reviewed-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
2009-09-23 11:10:15 -07:00
..
Makefile
addr.c RDMA: Add __init/__exit macros to addr.c and cma.c 2009-06-23 10:38:42 -07:00
agent.c
agent.h
cache.c
cm.c
cm_msgs.h
cma.c RDMA: Add __init/__exit macros to addr.c and cma.c 2009-06-23 10:38:42 -07:00
core_priv.h
device.c IB: Remove sysfs files before unregistering device 2009-02-25 13:27:46 -08:00
fmr_pool.c
iwcm.c RDMA/iwcm: Reject the connection when the cm_id is destroyed 2009-09-09 11:37:38 -07:00
iwcm.h
mad.c Merge branch 'mad' into for-linus 2009-09-10 21:19:45 -07:00
mad_priv.h IB/mad: Allow tuning of QP0 and QP1 sizes 2009-09-07 08:28:48 -07:00
mad_rmpp.c IB/mad: Fix lock-lock-timer deadlock in RMPP code 2009-09-23 11:10:15 -07:00
mad_rmpp.h
multicast.c IB/core: Fix send multicast group leave retry 2009-09-05 20:24:24 -07:00
packer.c
sa.h
sa_query.c IB: Use DEFINE_SPINLOCK() for static spinlocks 2009-09-05 20:24:23 -07:00
smi.c IB/mad: Check hop count field in directed route MAD to avoid array overflow 2009-09-05 20:24:10 -07:00
smi.h
sysfs.c infiniband: remove driver_data direct access of struct device 2009-06-15 21:30:26 -07:00
ucm.c
ucma.c
ud_header.c
umem.c
user_mad.c
uverbs.h
uverbs_cmd.c
uverbs_main.c IB/uverbs: Return ENOSYS for unimplemented commands (not EINVAL) 2009-09-05 20:24:24 -07:00
uverbs_marshall.c
verbs.c