Previous commit introduced ixgbe_mac_addr_refresh which touches netdev struct by updating mac addr. It should operate after taking rtnl lock. One of the callers is ixgbe_reset(). Most of scenarios when ixgbe_reset() is called met taking lock requirement, but there is a ixgbe_resume() path which calls ixgbe_reset() -> ixgbe_mac_addr_refresh() without taking the lock. So there is a risk of race. Move rtnl_lock() before ixgbe_reset() is called. Signed-off-by: Jedrzej Jagielski --- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index ce2b1e208c0f..c7261eb0e9b0 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -7574,11 +7574,11 @@ static int ixgbe_resume(struct device *dev_d) device_wakeup_disable(dev_d); + rtnl_lock(); ixgbe_reset(adapter); IXGBE_WRITE_REG(&adapter->hw, IXGBE_WUS, ~0); - rtnl_lock(); err = ixgbe_init_interrupt_scheme(adapter); if (!err && netif_running(netdev)) err = ixgbe_open(netdev); -- 2.31.1