i40e: Fix VF MAC filter removal
authorIvan Vecera <ivecera@redhat.com>
Fri, 29 Mar 2024 18:06:37 +0000 (11:06 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 2 Apr 2024 04:33:08 +0000 (21:33 -0700)
commitea2a1cfc3b2019bdea6324acd3c03606b60d71ad
treeadbae04b903a13fd4c91568cb12e7e5667bf936b
parent0323b251cea1765790e3cb1538e27e22ad16b0bc
i40e: Fix VF MAC filter removal

Commit 73d9629e1c8c ("i40e: Do not allow untrusted VF to remove
administratively set MAC") fixed an issue where untrusted VF was
allowed to remove its own MAC address although this was assigned
administratively from PF. Unfortunately the introduced check
is wrong because it causes that MAC filters for other MAC addresses
including multi-cast ones are not removed.

<snip>
if (ether_addr_equal(addr, vf->default_lan_addr.addr) &&
    i40e_can_vf_change_mac(vf))
was_unimac_deleted = true;
else
continue;

if (i40e_del_mac_filter(vsi, al->list[i].addr)) {
...
</snip>

The else path with `continue` effectively skips any MAC filter
removal except one for primary MAC addr when VF is allowed to do so.
Fix the check condition so the `continue` is only done for primary
MAC address.

Fixes: 73d9629e1c8c ("i40e: Do not allow untrusted VF to remove administratively set MAC")
Signed-off-by: Ivan Vecera <ivecera@redhat.com>
Reviewed-by: Michal Schmidt <mschmidt@redhat.com>
Reviewed-by: Brett Creeley <brett.creeley@amd.com>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://lore.kernel.org/r/20240329180638.211412-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c