Commit a9f7ee40 authored by Sasha Neftin's avatar Sasha Neftin Committed by Zheng Zengkai
Browse files

igc: reinit_locked() should be called with rtnl_lock



stable inclusion
from stable-5.10.27
commit d85ffade499ada9cc7c21a77611cc3fcf3f66a3a
bugzilla: 51493

--------------------------------

[ Upstream commit 6da26237 ]

This commit applies to the igc_reset_task the same changes that
were applied to the igb driver in commit 024a8168 ("igb:
reinit_locked() should be called with rtnl_lock")
and fix possible race in reset subtask.

Fixes: 0507ef8a ("igc: Add transmit and receive fastpath and interrupt handlers")
Suggested-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarSasha Neftin <sasha.neftin@intel.com>
Tested-by: default avatarDvora Fuxbrumer <dvorax.fuxbrumer@linux.intel.com>
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarChen Jun <chenjun102@huawei.com>
Acked-by: default avatar&nbsp; Weilong Chen <chenweilong@huawei.com>
Signed-off-by: default avatarZheng Zengkai <zhengzengkai@huawei.com>
parent e28a100e
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -3846,10 +3846,19 @@ static void igc_reset_task(struct work_struct *work)

	adapter = container_of(work, struct igc_adapter, reset_task);

	rtnl_lock();
	/* If we're already down or resetting, just bail */
	if (test_bit(__IGC_DOWN, &adapter->state) ||
	    test_bit(__IGC_RESETTING, &adapter->state)) {
		rtnl_unlock();
		return;
	}

	igc_rings_dump(adapter);
	igc_regs_dump(adapter);
	netdev_err(adapter->netdev, "Reset adapter\n");
	igc_reinit_locked(adapter);
	rtnl_unlock();
}

/**