]> www.infradead.org Git - users/jedix/linux-maple.git/commit
ice: check ICE_VSI_DOWN under rtnl_lock when preparing for reset
authorLarysa Zaremba <larysa.zaremba@intel.com>
Fri, 23 Aug 2024 09:59:29 +0000 (11:59 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Tue, 3 Sep 2024 16:01:08 +0000 (09:01 -0700)
commitd8c40b9d3a6cef61eb5a0c58c34a3090ea938d89
tree21dad620b2ca83810ec362edb35e0652991a24a1
parentf50c68763436bc8f805712a7c5ceaf58cfcf5f07
ice: check ICE_VSI_DOWN under rtnl_lock when preparing for reset

Consider the following scenario:

.ndo_bpf() | ice_prepare_for_reset() |
________________________|_______________________________________|
rtnl_lock() | |
ice_down() | |
| test_bit(ICE_VSI_DOWN) - true |
| ice_dis_vsi() returns |
ice_up() | |
| proceeds to rebuild a running VSI |

.ndo_bpf() is not the only rtnl-locked callback that toggles the interface
to apply new configuration. Another example is .set_channels().

To avoid the race condition above, act only after reading ICE_VSI_DOWN
under rtnl_lock.

Fixes: 0f9d5027a749 ("ice: Refactor VSI allocation, deletion and rebuild flow")
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Tested-by: Chandan Kumar Rout <chandanx.rout@intel.com>
Signed-off-by: Larysa Zaremba <larysa.zaremba@intel.com>
Reviewed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_lib.c