All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: hariprasad@chelsio.com
Cc: kernel-janitors@vger.kernel.org
Subject: [bug report] cxgb4: Add support for dynamic allocation of resources for ULD
Date: Mon, 22 Feb 2021 14:23:46 +0300	[thread overview]
Message-ID: <YDOUQjkElDIS5yKK@mwanda> (raw)

Hello Hariprasad Shenai,

The patch 94cdb8bb993a: "cxgb4: Add support for dynamic allocation of
resources for ULD" from Aug 17, 2016, leads to the following static
checker warning:

	drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c:7099 init_one()
	warn: 'adapter->msix_bmap.msix_bmap' double freed

drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
  7005                                   "could not offload tc matchall, continuing\n");
  7006                  if (cxgb4_init_ethtool_filters(adapter))
  7007                          dev_warn(&pdev->dev,
  7008                                   "could not initialize ethtool filters, continuing\n");
  7009          }
  7010  
  7011          /* See what interrupts we'll be using */
  7012          if (msi > 1 && enable_msix(adapter) == 0)
  7013                  adapter->flags |= CXGB4_USING_MSIX;
  7014          else if (msi > 0 && pci_enable_msi(pdev) == 0) {
  7015                  adapter->flags |= CXGB4_USING_MSI;
  7016                  if (msi > 1)
  7017                          free_msix_info(adapter);
                                ^^^^^^^^^^^^^^^^^^^^^^^^
free here

  7018          }
  7019  
  7020          /* check for PCI Express bandwidth capabiltites */
  7021          pcie_print_link_status(pdev);
  7022  
  7023          cxgb4_init_mps_ref_entries(adapter);
  7024  
  7025          err = init_rss(adapter);
  7026          if (err)
  7027                  goto out_free_dev;
                        ^^^^^^^^^^^^^^^^^
Assume we hit this goto

  7028  
  7029          err = setup_non_data_intr(adapter);
  7030          if (err) {
  7031                  dev_err(adapter->pdev_dev,
  7032                          "Non Data interrupt allocation failed, err: %d\n", err);
  7033                  goto out_free_dev;
  7034          }
  7035  
  7036          err = setup_fw_sge_queues(adapter);
  7037          if (err) {
  7038                  dev_err(adapter->pdev_dev,
  7039                          "FW sge queue allocation failed, err %d", err);
  7040                  goto out_free_dev;
  7041          }
  7042  
  7043  fw_attach_fail:
  7044          /*
  7045           * The card is now ready to go.  If any errors occur during device
  7046           * registration we do not fail the whole card but rather proceed only
  7047           * with the ports we manage to register successfully.  However we must
  7048           * register at least one net device.
  7049           */
  7050          for_each_port(adapter, i) {
  7051                  pi = adap2pinfo(adapter, i);
  7052                  adapter->port[i]->dev_port = pi->lport;
  7053                  netif_set_real_num_tx_queues(adapter->port[i], pi->nqsets);
  7054                  netif_set_real_num_rx_queues(adapter->port[i], pi->nqsets);
  7055  
  7056                  netif_carrier_off(adapter->port[i]);
  7057  
  7058                  err = register_netdev(adapter->port[i]);
  7059                  if (err)
  7060                          break;
  7061                  adapter->chan_map[pi->tx_chan] = i;
  7062                  print_port_info(adapter->port[i]);
  7063          }
  7064          if (i == 0) {
  7065                  dev_err(&pdev->dev, "could not register any net devices\n");
  7066                  goto out_free_dev;
  7067          }
  7068          if (err) {
  7069                  dev_warn(&pdev->dev, "only %d net devices registered\n", i);
  7070                  err = 0;
  7071          }
  7072  
  7073          if (cxgb4_debugfs_root) {
  7074                  adapter->debugfs_root = debugfs_create_dir(pci_name(pdev),
  7075                                                             cxgb4_debugfs_root);
  7076                  setup_debugfs(adapter);
  7077          }
  7078  
  7079          /* PCIe EEH recovery on powerpc platforms needs fundamental reset */
  7080          pdev->needs_freset = 1;
  7081  
  7082          if (is_uld(adapter))
  7083                  cxgb4_uld_enable(adapter);
  7084  
  7085          if (!is_t4(adapter->params.chip))
  7086                  cxgb4_ptp_init(adapter);
  7087  
  7088          if (IS_REACHABLE(CONFIG_THERMAL) &&
  7089              !is_t4(adapter->params.chip) && (adapter->flags & CXGB4_FW_OK))
  7090                  cxgb4_thermal_init(adapter);
  7091  
  7092          print_adapter_info(adapter);
  7093          return 0;
  7094  
  7095   out_free_dev:
  7096          t4_free_sge_resources(adapter);
  7097          free_some_resources(adapter);
  7098          if (adapter->flags & CXGB4_USING_MSIX)
  7099                  free_msix_info(adapter);
                        ^^^^^^^^^^^^^^^^^^^^^^^
Double free?

  7100          if (adapter->num_uld || adapter->num_ofld_uld)
  7101                  t4_uld_mem_free(adapter);
  7102   out_unmap_bar:
  7103          if (!is_t4(adapter->params.chip))
  7104                  iounmap(adapter->bar2);
  7105   out_free_adapter:
  7106          if (adapter->workq)
  7107                  destroy_workqueue(adapter->workq);
  7108  
  7109          kfree(adapter->mbox_log);
  7110          kfree(adapter);
  7111   out_unmap_bar0:
  7112          iounmap(regs);
  7113   out_disable_device:
  7114          pci_disable_pcie_error_reporting(pdev);
  7115          pci_disable_device(pdev);
  7116   out_release_regions:
  7117          pci_release_regions(pdev);
  7118          return err;
  7119  }

regards,
dan carpenter

             reply	other threads:[~2021-02-22 11:24 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-22 11:23 Dan Carpenter [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-10-14 14:15 [bug report] cxgb4: Add support for dynamic allocation of resources for ULD Dan Carpenter

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=YDOUQjkElDIS5yKK@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=hariprasad@chelsio.com \
    --cc=kernel-janitors@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.