• Krzysztof Goreczny's avatar
    ice: prevent ice_open and ice_stop during reset · e95fc857
    Krzysztof Goreczny authored
    There is a possibility of race between ice_open or ice_stop calls
    performed by OS and reset handling routine both trying to modify VSI
    resources. Observed scenarios:
    - reset handler deallocates memory in ice_vsi_free_arrays and ice_open
      tries to access it in ice_vsi_cfg_txq leading to driver crash
    - reset handler deallocates memory in ice_vsi_free_arrays and ice_close
      tries to access it in ice_down leading to driver crash
    - reset handler clears port scheduler topology and sets port state to
      ICE_SCHED_PORT_STATE_INIT leading to ice_ena_vsi_txq fail in ice_open
    
    To prevent this additional checks in ice_open and ice_stop are
    introduced to make sure that OS is not allowed to alter VSI config while
    reset is in progress.
    
    Fixes: cdedef59 ("ice: Configure VSIs for Tx/Rx")
    Signed-off-by: default avatarKrzysztof Goreczny <krzysztof.goreczny@intel.com>
    Tested-by: default avatarTony Brelinski <tonyx.brelinski@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    e95fc857
ice_lib.c 85.1 KB