• Bharat Potnuri's avatar
    iw_cxgb4: Fix possible circular dependency locking warning · 1c8f1da5
    Bharat Potnuri authored
    Locking sequence of iw_cxgb4 and RoCE drivers in ib_register_device() is
    slightly different and this leads to possible circular dependency locking
    warning when both the devices are brought up.
    
    Here is the locking sequence upto ib_register_device():
    iw_cxgb4: rtnl_mutex(net stack) --> uld_mutex --> device_mutex
    RoCE drivers: device_mutex --> rtnl_mutex
    
    Here is the possibility of cross locking:
    
    	CPU #0 (iw_cxgb4) 		     CPU #1 (RoCE drivers)
    
    -> on interface up cxgb4_up()
    executed with rtnl_mutex held
    -> hold uld_mutex and try
    registering ib device
    					-> In ib_register_device() hold
    					   device_mutex
    -> hold device mutex in
    ib_register_device
    					-> try acquiring rtnl_mutex in
    					   ib_enum_roce_netdev()
    
    Current patch schedules the ib_register_device() functionality of
    iw_cxgb4 to a workqueue to prevent the possible cross-locking.
    Also rename the labels in c4iw_reister_device().
    Signed-off-by: default avatarPotnuri Bharat Teja <bharat@chelsio.com>
    Reviewed-by: default avatarSteve Wise <swise@opengridcomputing.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    1c8f1da5
device.c 42.3 KB