* drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665 (fwd)
@ 2024-11-23 15:11 Julia Lawall
2024-11-25 17:53 ` Tony Nguyen
0 siblings, 1 reply; 3+ messages in thread
From: Julia Lawall @ 2024-11-23 15:11 UTC (permalink / raw)
To: Jinjie Ruan
Cc: oe-kbuild-all, linux-kernel, Paolo Abeni, Jacob Keller,
Tony Nguyen, Simon Horman
Please see lines 663-679. Setting entry to NULL is useless. The
list_for_each_entry will overwrite it, even if the list is empty. The
!empty test on line 678 is likewise useless, and the !entry->free est on
the same line may return a meaningless value if the list is empty.
Consider adding a flag variable to record whether the break was taken.
julia
---------- Forwarded message ----------
Date: Fri, 22 Nov 2024 14:07:03 +0800
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Julia Lawall <julia.lawall@inria.fr>
Subject: drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid
reference to the index variable of the iterator on line 665
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Jinjie Ruan <ruanjinjie@huawei.com>
CC: Paolo Abeni <pabeni@redhat.com>
CC: Jacob Keller <jacob.e.keller@intel.com>
CC: Tony Nguyen <anthony.l.nguyen@intel.com>
CC: Simon Horman <horms@kernel.org>
Hi Jinjie,
FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 28eb75e178d389d325f1666e422bc13bbbb9804c
commit: c1fec890458ad101ddbbc52cdd29f7bba6aa2b10 ethernet/intel: Use list_for_each_entry() helper
date: 1 year, 2 months ago
:::::: branch date: 7 hours ago
:::::: commit date: 1 year, 2 months ago
config: riscv-randconfig-r051-20241122 (https://download.01.org/0day-ci/archive/20241122/202411221358.yZAZKbuI-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 14.2.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202411221358.yZAZKbuI-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:16-21: ERROR: invalid reference to the index variable of the iterator on line 665
vim +678 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
4c7f35f679f592 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Alexander Duyck 2015-11-02 637
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 638 static int ixgbe_set_vf_macvlan(struct ixgbe_adapter *adapter,
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 639 int vf, int index, unsigned char *mac_addr)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 640 {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 641 struct vf_macvlans *entry;
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 642 int retval = 0;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 643
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 644 if (index <= 1) {
c1fec890458ad1 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jinjie Ruan 2023-09-19 645 list_for_each_entry(entry, &adapter->vf_mvs.l, l) {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 646 if (entry->vf == vf) {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 647 entry->vf = -1;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 648 entry->free = true;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 649 entry->is_macvlan = false;
5d7daa35b9eb14 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jacob Keller 2014-03-29 650 ixgbe_del_mac_filter(adapter,
5d7daa35b9eb14 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jacob Keller 2014-03-29 651 entry->vf_macvlan, vf);
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 652 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 653 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 654 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 655
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 656 /*
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 657 * If index was zero then we were asked to clear the uc list
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 658 * for the VF. We're done.
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 659 */
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 660 if (!index)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 661 return 0;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 662
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 663 entry = NULL;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 664
c1fec890458ad1 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jinjie Ruan 2023-09-19 @665 list_for_each_entry(entry, &adapter->vf_mvs.l, l) {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 666 if (entry->free)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 667 break;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 668 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 669
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 670 /*
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 671 * If we traversed the entire list and didn't find a free entry
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 672 * then we're out of space on the RAR table. Also entry may
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 673 * be NULL because the original memory allocation for the list
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 674 * failed, which is not fatal but does mean we can't support
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 675 * VF requests for MACVLAN because we couldn't allocate
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 676 * memory for the list management required.
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 677 */
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 @678 if (!entry || !entry->free)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 679 return -ENOSPC;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 680
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 681 retval = ixgbe_add_mac_filter(adapter, mac_addr, vf);
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 682 if (retval < 0)
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 683 return retval;
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 684
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 685 entry->free = false;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 686 entry->is_macvlan = true;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 687 entry->vf = vf;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 688 memcpy(entry->vf_macvlan, mac_addr, ETH_ALEN);
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 689
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 690 return 0;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 691 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 692
:::::: The code at line 678 was first introduced by commit
:::::: a1cbb15c13971bd5d41626e9e5ced9f9de132c47 ixgbe: Add macvlan support for VF
:::::: TO: Greg Rose <gregory.v.rose@intel.com>
:::::: CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665 (fwd)
2024-11-23 15:11 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665 (fwd) Julia Lawall
@ 2024-11-25 17:53 ` Tony Nguyen
0 siblings, 0 replies; 3+ messages in thread
From: Tony Nguyen @ 2024-11-25 17:53 UTC (permalink / raw)
To: Julia Lawall, Jinjie Ruan
Cc: oe-kbuild-all, linux-kernel, Paolo Abeni, Jacob Keller,
Simon Horman, Dan Carpenter
On 11/23/2024 7:11 AM, Julia Lawall wrote:
> Please see lines 663-679. Setting entry to NULL is useless. The
> list_for_each_entry will overwrite it, even if the list is empty. The
> !empty test on line 678 is likewise useless, and the !entry->free est on
> the same line may return a meaningless value if the list is empty.
> Consider adding a flag variable to record whether the break was taken.
Hi Julia,
I believe this has already been addressed via commit a41654c3ed1d
("ixgbe: fix end of loop test in ixgbe_set_vf_macvlan()").
Thanks,
Tony
> julia
>
> ---------- Forwarded message ----------
> Date: Fri, 22 Nov 2024 14:07:03 +0800
> From: kernel test robot <lkp@intel.com>
> To: oe-kbuild@lists.linux.dev
> Cc: lkp@intel.com, Julia Lawall <julia.lawall@inria.fr>
> Subject: drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid
> reference to the index variable of the iterator on line 665
>
> BCC: lkp@intel.com
> CC: oe-kbuild-all@lists.linux.dev
> CC: linux-kernel@vger.kernel.org
> TO: Jinjie Ruan <ruanjinjie@huawei.com>
> CC: Paolo Abeni <pabeni@redhat.com>
> CC: Jacob Keller <jacob.e.keller@intel.com>
> CC: Tony Nguyen <anthony.l.nguyen@intel.com>
> CC: Simon Horman <horms@kernel.org>
>
> Hi Jinjie,
>
> FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.
>
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: 28eb75e178d389d325f1666e422bc13bbbb9804c
> commit: c1fec890458ad101ddbbc52cdd29f7bba6aa2b10 ethernet/intel: Use list_for_each_entry() helper
> date: 1 year, 2 months ago
> :::::: branch date: 7 hours ago
> :::::: commit date: 1 year, 2 months ago
> config: riscv-randconfig-r051-20241122 (https://download.01.org/0day-ci/archive/20241122/202411221358.yZAZKbuI-lkp@intel.com/config)
> compiler: riscv64-linux-gcc (GCC) 14.2.0
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Reported-by: Julia Lawall <julia.lawall@inria.fr>
> | Closes: https://lore.kernel.org/r/202411221358.yZAZKbuI-lkp@intel.com/
>
> cocci warnings: (new ones prefixed by >>)
>>> drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665
> drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:16-21: ERROR: invalid reference to the index variable of the iterator on line 665
>
> vim +678 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
>
> 4c7f35f679f592 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Alexander Duyck 2015-11-02 637
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 638 static int ixgbe_set_vf_macvlan(struct ixgbe_adapter *adapter,
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 639 int vf, int index, unsigned char *mac_addr)
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 640 {
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 641 struct vf_macvlans *entry;
> 0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 642 int retval = 0;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 643
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 644 if (index <= 1) {
> c1fec890458ad1 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jinjie Ruan 2023-09-19 645 list_for_each_entry(entry, &adapter->vf_mvs.l, l) {
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 646 if (entry->vf == vf) {
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 647 entry->vf = -1;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 648 entry->free = true;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 649 entry->is_macvlan = false;
> 5d7daa35b9eb14 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jacob Keller 2014-03-29 650 ixgbe_del_mac_filter(adapter,
> 5d7daa35b9eb14 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jacob Keller 2014-03-29 651 entry->vf_macvlan, vf);
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 652 }
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 653 }
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 654 }
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 655
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 656 /*
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 657 * If index was zero then we were asked to clear the uc list
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 658 * for the VF. We're done.
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 659 */
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 660 if (!index)
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 661 return 0;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 662
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 663 entry = NULL;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 664
> c1fec890458ad1 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jinjie Ruan 2023-09-19 @665 list_for_each_entry(entry, &adapter->vf_mvs.l, l) {
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 666 if (entry->free)
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 667 break;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 668 }
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 669
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 670 /*
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 671 * If we traversed the entire list and didn't find a free entry
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 672 * then we're out of space on the RAR table. Also entry may
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 673 * be NULL because the original memory allocation for the list
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 674 * failed, which is not fatal but does mean we can't support
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 675 * VF requests for MACVLAN because we couldn't allocate
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 676 * memory for the list management required.
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 677 */
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 @678 if (!entry || !entry->free)
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 679 return -ENOSPC;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 680
> 0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 681 retval = ixgbe_add_mac_filter(adapter, mac_addr, vf);
> 0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 682 if (retval < 0)
> 0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 683 return retval;
> 0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 684
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 685 entry->free = false;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 686 entry->is_macvlan = true;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 687 entry->vf = vf;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 688 memcpy(entry->vf_macvlan, mac_addr, ETH_ALEN);
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 689
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 690 return 0;
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 691 }
> a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 692
>
> :::::: The code at line 678 was first introduced by commit
> :::::: a1cbb15c13971bd5d41626e9e5ced9f9de132c47 ixgbe: Add macvlan support for VF
>
> :::::: TO: Greg Rose <gregory.v.rose@intel.com>
> :::::: CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665 (fwd)
@ 2024-10-30 18:09 Julia Lawall
0 siblings, 0 replies; 3+ messages in thread
From: Julia Lawall @ 2024-10-30 18:09 UTC (permalink / raw)
To: Jinjie Ruan
Cc: Paolo Abeni, Jacob Keller, Tony Nguyen, Simon Horman,
linux-kernel, oe-kbuild-all
Please see line 663 and line 678.
On line 665, entry will always be initialized, even if the list is empty.
So the assignment entry = NULL is useless on line 663. And likewise entry
will not be NULL on line 678. If the list is empty, it will be pointing
out into space at an offset from the initial list head.
julia
---------- Forwarded message ----------
Date: Thu, 31 Oct 2024 01:16:33 +0800
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Julia Lawall <julia.lawall@inria.fr>
Subject: drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid
reference to the index variable of the iterator on line 665
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Jinjie Ruan <ruanjinjie@huawei.com>
CC: Paolo Abeni <pabeni@redhat.com>
CC: Jacob Keller <jacob.e.keller@intel.com>
CC: Tony Nguyen <anthony.l.nguyen@intel.com>
CC: Simon Horman <horms@kernel.org>
Hi Jinjie,
FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: c1e939a21eb111a6d6067b38e8e04b8809b64c4e
commit: c1fec890458ad101ddbbc52cdd29f7bba6aa2b10 ethernet/intel: Use list_for_each_entry() helper
date: 1 year, 1 month ago
:::::: branch date: 15 hours ago
:::::: commit date: 1 year, 1 month ago
config: xtensa-randconfig-r054-20241030 (https://download.01.org/0day-ci/archive/20241031/202410310150.GAApd4GK-lkp@intel.com/config)
compiler: xtensa-linux-gcc (GCC) 14.1.0
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Julia Lawall <julia.lawall@inria.fr>
| Closes: https://lore.kernel.org/r/202410310150.GAApd4GK-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:16-21: ERROR: invalid reference to the index variable of the iterator on line 665
vim +678 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
4c7f35f679f592 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Alexander Duyck 2015-11-02 637
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 638 static int ixgbe_set_vf_macvlan(struct ixgbe_adapter *adapter,
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 639 int vf, int index, unsigned char *mac_addr)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 640 {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 641 struct vf_macvlans *entry;
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 642 int retval = 0;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 643
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 644 if (index <= 1) {
c1fec890458ad1 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jinjie Ruan 2023-09-19 645 list_for_each_entry(entry, &adapter->vf_mvs.l, l) {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 646 if (entry->vf == vf) {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 647 entry->vf = -1;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 648 entry->free = true;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 649 entry->is_macvlan = false;
5d7daa35b9eb14 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jacob Keller 2014-03-29 650 ixgbe_del_mac_filter(adapter,
5d7daa35b9eb14 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jacob Keller 2014-03-29 651 entry->vf_macvlan, vf);
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 652 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 653 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 654 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 655
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 656 /*
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 657 * If index was zero then we were asked to clear the uc list
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 658 * for the VF. We're done.
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 659 */
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 660 if (!index)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 661 return 0;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 662
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 663 entry = NULL;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 664
c1fec890458ad1 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Jinjie Ruan 2023-09-19 @665 list_for_each_entry(entry, &adapter->vf_mvs.l, l) {
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 666 if (entry->free)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 667 break;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 668 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 669
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 670 /*
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 671 * If we traversed the entire list and didn't find a free entry
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 672 * then we're out of space on the RAR table. Also entry may
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 673 * be NULL because the original memory allocation for the list
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 674 * failed, which is not fatal but does mean we can't support
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 675 * VF requests for MACVLAN because we couldn't allocate
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 676 * memory for the list management required.
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 677 */
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 @678 if (!entry || !entry->free)
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 679 return -ENOSPC;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 680
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 681 retval = ixgbe_add_mac_filter(adapter, mac_addr, vf);
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 682 if (retval < 0)
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 683 return retval;
0e1ff3061cb529 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c Tony Nguyen 2017-07-19 684
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 685 entry->free = false;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 686 entry->is_macvlan = true;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 687 entry->vf = vf;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 688 memcpy(entry->vf_macvlan, mac_addr, ETH_ALEN);
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 689
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 690 return 0;
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 691 }
a1cbb15c13971b drivers/net/ixgbe/ixgbe_sriov.c Greg Rose 2011-05-13 692
:::::: The code at line 678 was first introduced by commit
:::::: a1cbb15c13971bd5d41626e9e5ced9f9de132c47 ixgbe: Add macvlan support for VF
:::::: TO: Greg Rose <gregory.v.rose@intel.com>
:::::: CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-11-25 17:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-11-23 15:11 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c:678:6-11: ERROR: invalid reference to the index variable of the iterator on line 665 (fwd) Julia Lawall
2024-11-25 17:53 ` Tony Nguyen
-- strict thread matches above, loose matches on Subject: below --
2024-10-30 18:09 Julia Lawall
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®