• Jacob Keller's avatar
    ice: call ice_is_malicious_vf() from ice_vc_process_vf_msg() · be96815c
    Jacob Keller authored
    The main loop in __ice_clean_ctrlq first checks if a VF might be malicious
    before calling ice_vc_process_vf_msg(). This results in duplicate code in
    both functions to obtain a reference to the VF, and exports the
    ice_is_malicious_vf() from ice_virtchnl.c unnecessarily.
    
    Refactor ice_is_malicious_vf() to be a static function that takes a pointer
    to the VF. Call this in ice_vc_process_vf_msg() just after we obtain a
    reference to the VF by calling ice_get_vf_by_id.
    
    Pass the mailbox data from the __ice_clean_ctrlq function into
    ice_vc_process_vf_msg() instead of calling ice_is_malicious_vf().
    
    This reduces the number of exported functions and avoids the need to obtain
    the VF reference twice for every mailbox message.
    
    Note that the state check for ICE_VF_STATE_DIS is kept in
    ice_is_malicious_vf() and we call this before checking that state in
    ice_vc_process_vf_msg. This is intentional, as we stop responding to VF
    messages from a VF once we detect that it may be overflowing the mailbox.
    This ensures that we continue to silently ignore the message as before
    without responding via ice_vc_send_msg_to_vf().
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Reviewed-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
    Tested-by: default avatarMarek Szlosek <marek.szlosek@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    be96815c
ice_virtchnl.h 3.56 KB