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 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.