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
next 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).