i40e: i40e_main: fix a missing check on list iterator
authorXiaomeng Tong <xiam0nd.tong@gmail.com>
Tue, 10 May 2022 20:48:46 +0000 (13:48 -0700)
committerJakub Kicinski <kuba@kernel.org>
Wed, 11 May 2022 22:19:28 +0000 (15:19 -0700)
commit3f95a7472d14abef284d8968734fe2ae7ff4845f
tree7591c2ad116993ed37a3ce83a99f6fbbc5bde140
parent8b796475fd7882663a870456466a4fb315cc1bd6
i40e: i40e_main: fix a missing check on list iterator

The bug is here:
ret = i40e_add_macvlan_filter(hw, ch->seid, vdev->dev_addr, &aq_err);

The list iterator 'ch' will point to a bogus position containing
HEAD if the list is empty or no element is found. This case must
be checked before any use of the iterator, otherwise it will
lead to a invalid memory access.

To fix this bug, use a new variable 'iter' as the list iterator,
while use the origin variable 'ch' as a dedicated pointer to
point to the found element.

Cc: stable@vger.kernel.org
Fixes: 1d8d80b4e4ff6 ("i40e: Add macvlan support on i40e")
Signed-off-by: Xiaomeng Tong <xiam0nd.tong@gmail.com>
Tested-by: Gurucharan <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://lore.kernel.org/r/20220510204846.2166999-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/intel/i40e/i40e_main.c