From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
To: Julia Lawall <julia.lawall@lip6.fr>,
Harshitha Ramamurthy <harshitha.ramamurthy@intel.com>
Cc: linux-kernel@vger.kernel.org, kbuild-all@01.org
Subject: Re: drivers/net/ethernet/intel/i40e/i40e_main.c:7089:35-37: ERROR: invalid reference to the index variable of the iterator on line 7056 (fwd)
Date: Thu, 08 Aug 2019 14:55:50 -0700 [thread overview]
Message-ID: <86082ebc5080859735ce69655166da2beb2c3b7d.camel@intel.com> (raw)
In-Reply-To: <alpine.DEB.2.21.1908081806370.2995@hadrien>
[-- Attachment #1: Type: text/plain, Size: 8520 bytes --]
On Thu, 2019-08-08 at 18:08 +0200, Julia Lawall wrote:
> Hello,
>
> Is it guaranteed that the loop starting on line 7056 will eventually
> take
> the break? If not, line 7089 will be performing an invalid
> dereference of
> ch.
Good catch Julia, I have talked with Harshitha and if after checking
the list of channels and not finding an available channel, we should
exit the function instead of proceeding on to add the MACVLAN filter.
Harshitha said she would put together a patch to fix the issue in the
next day or two, unless you or someone else gets to it first.
>
> ---------- Forwarded message ----------
> Date: Thu, 8 Aug 2019 21:31:53 +0800
> From: kbuild test robot <lkp@intel.com>
> To: kbuild@01.org
> Cc: Julia Lawall <julia.lawall@lip6.fr>
> Subject: drivers/net/ethernet/intel/i40e/i40e_main.c:7089:35-37:
> ERROR: invalid
> reference to the index variable of the iterator on line 7056
>
> CC: kbuild-all@01.org
> CC: linux-kernel@vger.kernel.org
> TO: Harshitha Ramamurthy <harshitha.ramamurthy@intel.com>
> CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>
> tree:
> https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
> master
> head: ecb095bff5d4b8711a81968625b3b4a235d3e477
> commit: 1d8d80b4e4ff641eefa5250cba324dfa5861a9f1 i40e: Add macvlan
> support on i40e
> date: 6 weeks ago
> :::::: branch date: 15 hours ago
> :::::: commit date: 6 weeks ago
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
> Reported-by: Julia Lawall <julia.lawall@lip6.fr>
>
> > > drivers/net/ethernet/intel/i40e/i40e_main.c:7089:35-37: ERROR:
> > > invalid reference to the index variable of the iterator on line
> > > 7056
>
> git remote add linus
> https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux.git
> git remote update linus
> git checkout 1d8d80b4e4ff641eefa5250cba324dfa5861a9f1
> vim +7089 drivers/net/ethernet/intel/i40e/i40e_main.c
>
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7037
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7038 /**
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7039 *
> i40e_fwd_ring_up - bring the macvlan device up
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7040 * @vsi: the
> VSI we want to access
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7041 * @vdev:
> macvlan netdevice
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7042 * @fwd: the
> private fwd structure
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7043 */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7044 static int
> i40e_fwd_ring_up(struct i40e_vsi *vsi, struct net_device *vdev,
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7045
> struct i40e_fwd_adapter *fwd)
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7046 {
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7047 int ret
> = 0, num_tc = 1, i, aq_err;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7048 struct
> i40e_channel *ch, *ch_tmp;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7049 struct
> i40e_pf *pf = vsi->back;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7050 struct
> i40e_hw *hw = &pf->hw;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7051
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7052 if
> (list_empty(&vsi->macvlan_list))
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7053
> return -EINVAL;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7054
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7055 /* Go
> through the list and find an available channel */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 @7056 list_fo
> r_each_entry_safe(ch, ch_tmp, &vsi->macvlan_list, list) {
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7057
> if (!i40e_is_channel_macvlan(ch)) {
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7058
> ch->fwd = fwd;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7059
> /* record configuration for macvlan interface in vdev */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7060
> for (i = 0; i < num_tc; i++)
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7061
> netdev_bind_sb_channel_queue(vsi->netdev, vdev,
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7062
> i,
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7063
> ch->num_queue_pairs,
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7064
> ch->base_queue);
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7065
> for (i = 0; i < ch->num_queue_pairs; i++) {
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7066
> struct i40e_ring *tx_ring, *rx_ring;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7067
> u16 pf_q;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7068
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7069
> pf_q = ch->base_queue + i;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7070
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7071
> /* Get to TX ring ptr */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7072
> tx_ring = vsi->tx_rings[pf_q];
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7073
> tx_ring->ch = ch;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7074
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7075
> /* Get the RX ring ptr */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7076
> rx_ring = vsi->rx_rings[pf_q];
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7077
> rx_ring->ch = ch;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7078
> }
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7079
> break;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7080
> }
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7081 }
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7082
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7083 /*
> Guarantee all rings are updated before we update the
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7084 * MAC
> address filter.
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7085 */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7086 wmb();
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7087
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7088 /* Add
> a mac filter */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 @7089 ret =
> i40e_add_macvlan_filter(hw, ch->seid, vdev->dev_addr, &aq_err);
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7090 if
> (ret) {
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7091
> /* if we cannot add the MAC rule then disable the offload */
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7092
> macvlan_release_l2fw_offload(vdev);
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7093
> for (i = 0; i < ch->num_queue_pairs; i++) {
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7094
> struct i40e_ring *rx_ring;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7095
> u16 pf_q;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7096
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7097
> pf_q = ch->base_queue + i;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7098
> rx_ring = vsi->rx_rings[pf_q];
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7099
> rx_ring->netdev = NULL;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7100
> }
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7101
> dev_info(&pf->pdev->dev,
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7102
> "Error adding mac filter on macvlan err %s, aq_err %s\n",
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7103
> i40e_stat_str(hw, ret),
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7104
> i40e_aq_str(hw, aq_err));
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7105
> netdev_err(vdev, "L2fwd offload disabled to L2 filter error\n");
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7106 }
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7107
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7108 return
> ret;
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7109 }
> 1d8d80b4e4ff64 Harshitha Ramamurthy 2019-06-19 7110
>
> ---
> 0-DAY kernel test infrastructure Open Source
> Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel
> Corporation
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2019-08-08 21:55 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-08 16:08 Julia Lawall
2019-08-08 21:55 ` Jeff Kirsher [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86082ebc5080859735ce69655166da2beb2c3b7d.camel@intel.com \
--to=jeffrey.t.kirsher@intel.com \
--cc=harshitha.ramamurthy@intel.com \
--cc=julia.lawall@lip6.fr \
--cc=kbuild-all@01.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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®