i40e: fix potential NULL pointer dereferencing of pf->vf i40e_sync_vsi_filters()
authorAndrii Staikov <andrii.staikov@intel.com>
Tue, 22 Aug 2023 22:16:53 +0000 (15:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 23 Aug 2023 10:48:04 +0000 (11:48 +0100)
Add check for pf->vf not being NULL before dereferencing
pf->vf[vsi->vf_id] in updating VSI filter sync.
Add a similar check before dereferencing !pf->vf[vsi->vf_id].trusted
in the condition for clearing promisc mode bit.

Fixes: c87c938f62d8 ("i40e: Add VF VLAN pruning")
Signed-off-by: Andrii Staikov <andrii.staikov@intel.com>
Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 29ad179..a86bfa3 100644 (file)
@@ -2609,7 +2609,7 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
                        retval = i40e_correct_mac_vlan_filters
                                (vsi, &tmp_add_list, &tmp_del_list,
                                 vlan_filters);
-               else
+               else if (pf->vf)
                        retval = i40e_correct_vf_mac_vlan_filters
                                (vsi, &tmp_add_list, &tmp_del_list,
                                 vlan_filters, pf->vf[vsi->vf_id].trusted);
@@ -2782,7 +2782,8 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
        }
 
        /* if the VF is not trusted do not do promisc */
-       if ((vsi->type == I40E_VSI_SRIOV) && !pf->vf[vsi->vf_id].trusted) {
+       if (vsi->type == I40E_VSI_SRIOV && pf->vf &&
+           !pf->vf[vsi->vf_id].trusted) {
                clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
                goto out;
        }