lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20180621110232.gsup57hb5n7dxny5@kili.mountain>
Date:   Thu, 21 Jun 2018 14:02:32 +0300
From:   Dan Carpenter <dan.carpenter@...cle.com>
To:     jesse.brandeburg@...el.com
Cc:     intel-wired-lan@...ts.osuosl.org, netdev@...r.kernel.org
Subject: [bug report] i40e: main driver core

Hello Jesse Brandeburg,

The patch 41c445ff0f48: "i40e: main driver core" from Sep 11, 2013,
leads to the following static checker warning:

	drivers/net/ethernet/intel/i40e/i40e_main.c:13065 i40e_veb_setup()
	warn: potential off by one 'pf->vsi[]' 'vsi_idx == pf->num_alloc_vsi'

drivers/net/ethernet/intel/i40e/i40e_main.c
 13025                           uplink_seid, vsi_seid);
 13026                  return NULL;
 13027          }
 13028  
 13029          /* make sure there is such a vsi and uplink */
 13030          for (vsi_idx = 0; vsi_idx < pf->num_alloc_vsi; vsi_idx++)
 13031                  if (pf->vsi[vsi_idx] && pf->vsi[vsi_idx]->seid == vsi_seid)
 13032                          break;
 13033          if (vsi_idx >= pf->num_alloc_vsi && vsi_seid != 0) {
                                                    ^^^^^^^^^^^^^
I think if pf->num_alloc_vsi is zero then we're going to run into
problems.  We should remove this condition.

 13034                  dev_info(&pf->pdev->dev, "vsi seid %d not found\n",
 13035                           vsi_seid);
 13036                  return NULL;
 13037          }
 13038  
 13039          if (uplink_seid && uplink_seid != pf->mac_seid) {
 13040                  for (veb_idx = 0; veb_idx < I40E_MAX_VEB; veb_idx++) {
 13041                          if (pf->veb[veb_idx] &&
 13042                              pf->veb[veb_idx]->seid == uplink_seid) {
 13043                                  uplink_veb = pf->veb[veb_idx];
 13044                                  break;
 13045                          }
 13046                  }
 13047                  if (!uplink_veb) {
 13048                          dev_info(&pf->pdev->dev,
 13049                                   "uplink seid %d not found\n", uplink_seid);
 13050                          return NULL;
 13051                  }
 13052          }
 13053  
 13054          /* get veb sw struct */
 13055          veb_idx = i40e_veb_mem_alloc(pf);
 13056          if (veb_idx < 0)
 13057                  goto err_alloc;
 13058          veb = pf->veb[veb_idx];
 13059          veb->flags = flags;
 13060          veb->uplink_seid = uplink_seid;
 13061          veb->veb_idx = (uplink_veb ? uplink_veb->idx : I40E_NO_VEB);
 13062          veb->enabled_tc = (enabled_tc ? enabled_tc : 0x1);
 13063  
 13064          /* create the VEB in the switch */
 13065          ret = i40e_add_veb(veb, pf->vsi[vsi_idx]);
                                        ^^^^^^^^^^^^^^^^
 13066          if (ret)
 13067                  goto err_veb;

regards,
dan carpenter

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ