Message ID | 20221114082640.91128-3-yuancan@huawei.com |
---|---|
State | Accepted |
Delegated to: | Anthony Nguyen |
Headers | show |
Series | Fix error handling path | expand |
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of Yuan > Can > Sent: Monday, November 14, 2022 9:27 AM > To: Brandeburg, Jesse <jesse.brandeburg@intel.com>; Nguyen, Anthony L > <anthony.l.nguyen@intel.com>; davem@davemloft.net; > edumazet@google.com; kuba@kernel.org; pabeni@redhat.com; > alexander.h.duyck@intel.com; jeffrey.t.kirsher@intel.com; Vick, Matthew > <matthew.vick@intel.com>; Keller, Jacob E <jacob.e.keller@intel.com>; intel- > wired-lan@lists.osuosl.org; netdev@vger.kernel.org > Cc: yuancan@huawei.com > Subject: [Intel-wired-lan] [PATCH 2/2] iavf: Fix error handling in iavf_init_module() > > The iavf_init_module() won't destroy workqueue when pci_register_driver() > failed. Call destroy_workqueue() when pci_register_driver() failed to prevent the > resource leak. > > Similar to the handling of u132_hcd_init in commit f276e002793c > ("usb: u132-hcd: fix resource leak") > > Fixes: 2803b16c10ea ("i40e/i40evf: Use private workqueue") > Signed-off-by: Yuan Can <yuancan@huawei.com> > --- > drivers/net/ethernet/intel/iavf/iavf_main.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c > b/drivers/net/ethernet/intel/iavf/iavf_main.c > index 3fc572341781..69fded35e476 100644 > --- a/drivers/net/ethernet/intel/iavf/iavf_main.c > +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c > https://lists.osuosl.org/mailman/listinfo/intel-wired-lan Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c index 3fc572341781..69fded35e476 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_main.c +++ b/drivers/net/ethernet/intel/iavf/iavf_main.c @@ -5191,6 +5191,8 @@ static struct pci_driver iavf_driver = { **/ static int __init iavf_init_module(void) { + int ret; + pr_info("iavf: %s\n", iavf_driver_string); pr_info("%s\n", iavf_copyright); @@ -5201,7 +5203,12 @@ static int __init iavf_init_module(void) pr_err("%s: Failed to create workqueue\n", iavf_driver_name); return -ENOMEM; } - return pci_register_driver(&iavf_driver); + + ret = pci_register_driver(&iavf_driver); + if (ret) + destroy_workqueue(iavf_wq); + + return ret; } module_init(iavf_init_module);
The iavf_init_module() won't destroy workqueue when pci_register_driver() failed. Call destroy_workqueue() when pci_register_driver() failed to prevent the resource leak. Similar to the handling of u132_hcd_init in commit f276e002793c ("usb: u132-hcd: fix resource leak") Fixes: 2803b16c10ea ("i40e/i40evf: Use private workqueue") Signed-off-by: Yuan Can <yuancan@huawei.com> --- drivers/net/ethernet/intel/iavf/iavf_main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)