]> asedeno.scripts.mit.edu Git - linux.git/commit
net/ibmvnic: unlock rtnl_lock in reset so linkwatch_event can run
authorJuliet Kim <julietk@linux.vnet.ibm.com>
Fri, 20 Sep 2019 20:11:22 +0000 (16:11 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 25 Sep 2019 11:41:41 +0000 (13:41 +0200)
commitb27507bb59ed504d7fa4d6a35f25a8cc39903b54
tree1458033c8dbebf816988628968a4de18a290329b
parent5aafeb74b5bb65b34cc87c7623f9fa163a34fa3b
net/ibmvnic: unlock rtnl_lock in reset so linkwatch_event can run

Commit a5681e20b541 ("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: a5681e20b541 ("net/ibmnvic: Fix deadlock problem in reset")
Signed-off-by: Juliet Kim <julietk@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ibm/ibmvnic.c
drivers/net/ethernet/ibm/ibmvnic.h