Message ID | 20221114025659.124726-1-yuancan@huawei.com (mailing list archive) |
---|---|
State | Accepted |
Commit | d349e9be5a2c2d7588a2c4e4bfa0bb3dc1226769 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: ena: Fix error handling in ena_init() | expand |
Yuan Can <yuancan@huawei.com> writes: > The ena_init() won't destroy workqueue created by > create_singlethread_workqueue() when pci_register_driver() > failed. > Call destroy_workqueue() when pci_register_driver() failed to > prevent the > resource leak. > > Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic > Network Adapters (ENA)") > Signed-off-by: Yuan Can <yuancan@huawei.com> > --- > drivers/net/ethernet/amazon/ena/ena_netdev.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c > b/drivers/net/ethernet/amazon/ena/ena_netdev.c > index d350eeec8bad..5a454b58498f 100644 > --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c > +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c > @@ -4543,13 +4543,19 @@ static struct pci_driver ena_pci_driver > = { > > static int __init ena_init(void) > { > + int ret; > + > ena_wq = create_singlethread_workqueue(DRV_MODULE_NAME); > if (!ena_wq) { > pr_err("Failed to create workqueue\n"); > return -ENOMEM; > } > > - return pci_register_driver(&ena_pci_driver); > + ret = pci_register_driver(&ena_pci_driver); > + if (ret) > + destroy_workqueue(ena_wq); > + > + return ret; > } > > static void __exit ena_cleanup(void) Lgtm. Thanks for this fix. Acked-by: Shay Agroskin <shayagr@amazon.com>
Hello: This patch was applied to netdev/net.git (master) by Paolo Abeni <pabeni@redhat.com>: On Mon, 14 Nov 2022 02:56:59 +0000 you wrote: > The ena_init() won't destroy workqueue created by > create_singlethread_workqueue() when pci_register_driver() failed. > Call destroy_workqueue() when pci_register_driver() failed to prevent the > resource leak. > > Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)") > Signed-off-by: Yuan Can <yuancan@huawei.com> > > [...] Here is the summary with links: - net: ena: Fix error handling in ena_init() https://git.kernel.org/netdev/net/c/d349e9be5a2c You are awesome, thank you!
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c index d350eeec8bad..5a454b58498f 100644 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c @@ -4543,13 +4543,19 @@ static struct pci_driver ena_pci_driver = { static int __init ena_init(void) { + int ret; + ena_wq = create_singlethread_workqueue(DRV_MODULE_NAME); if (!ena_wq) { pr_err("Failed to create workqueue\n"); return -ENOMEM; } - return pci_register_driver(&ena_pci_driver); + ret = pci_register_driver(&ena_pci_driver); + if (ret) + destroy_workqueue(ena_wq); + + return ret; } static void __exit ena_cleanup(void)
The ena_init() won't destroy workqueue created by create_singlethread_workqueue() when pci_register_driver() failed. Call destroy_workqueue() when pci_register_driver() failed to prevent the resource leak. Fixes: 1738cd3ed342 ("net: ena: Add a driver for Amazon Elastic Network Adapters (ENA)") Signed-off-by: Yuan Can <yuancan@huawei.com> --- drivers/net/ethernet/amazon/ena/ena_netdev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)