]> git.baikalelectronics.ru Git - kernel.git/commit
IB/ipoib: Consolidate rtnl_lock tasks in workqueue
authorDoug Ledford <dledford@redhat.com>
Sun, 22 Feb 2015 00:27:01 +0000 (19:27 -0500)
committerDoug Ledford <dledford@redhat.com>
Wed, 15 Apr 2015 20:06:17 +0000 (16:06 -0400)
commit89ab6903dfbd3525f9d97fd190feab37f674d154
tree90da63e83ca554c96167dfcd65998de7fd1440a5
parent5e55f76908f50b997fc3a17efc6867aad98ac697
IB/ipoib: Consolidate rtnl_lock tasks in workqueue

The ipoib_mcast_flush_dev routine is called with the rtnl_lock held and
needs to keep it held.  It also needs to call flush_workqueue() to flush
out any outstanding work.  In the past, we've had to try and make sure
that we didn't flush out any outstanding join completions because they
also wanted to grab rtnl_lock() and that would deadlock.  It turns out
that the only thing in the join completion handler that needs this lock
can be safely moved to our carrier_on_task, thereby reducing the
potential for the join completion code and the flush code to deadlock
against each other.

Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/ulp/ipoib/ipoib_multicast.c