• Doug Ledford's avatar
    IB/ipoib: Consolidate rtnl_lock tasks in workqueue · c84ca6d2
    Doug Ledford authored
    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: default avatarDoug Ledford <dledford@redhat.com>
    c84ca6d2
ipoib_multicast.c 25.1 KB