• Juliet Kim's avatar
    net/ibmvnic: unlock rtnl_lock in reset so linkwatch_event can run · b27507bb
    Juliet Kim authored
    Commit a5681e20 ("net/ibmnvic: Fix deadlock problem in reset")
    made the change to hold the RTNL lock during a reset to avoid deadlock
    but linkwatch_event is fired during the reset and needs the RTNL lock.
    That keeps linkwatch_event process from proceeding until the reset
    is complete. The reset process cannot tolerate the linkwatch_event
    processing after reset completes, so release the RTNL lock during the
    process to allow a chance for linkwatch_event to run during reset.
    This does not guarantee that the linkwatch_event will be processed as
    soon as link state changes, but is an improvement over the current code
    where linkwatch_event processing is always delayed, which prevents
    transmissions on the device from being deactivated leading transmit
    watchdog timer to time-out.
    
    Release the RTNL lock before link state change and re-acquire after
    the link state change to allow linkwatch_event to grab the RTNL lock
    and run during the reset.
    
    Fixes: a5681e20 ("net/ibmnvic: Fix deadlock problem in reset")
    Signed-off-by: default avatarJuliet Kim <julietk@linux.vnet.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b27507bb
ibmvnic.c 137 KB