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: 0f9d5027 ("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>
Showing
Please register or sign in to comment