]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq
authorYongqiang Liu <liuyongqiang13@huawei.com>
Sat, 3 Dec 2022 09:41:25 +0000 (09:41 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Dec 2022 10:30:46 +0000 (11:30 +0100)
[ Upstream commit 42330a32933fb42180c52022804dcf09f47a2f99 ]

The nicvf_probe() won't destroy workqueue when register_netdev()
failed. Add destroy_workqueue err handle case to fix this issue.

Fixes: 50ef047b1ed9 ("net: thunderx: replace global nicvf_rx_mode_wq work queue for all VFs to private for each of them.")
Signed-off-by: Yongqiang Liu <liuyongqiang13@huawei.com>
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
Link: https://lore.kernel.org/r/20221203094125.602812-1-liuyongqiang13@huawei.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/cavium/thunder/nicvf_main.c

index 27ea528ef448432c9a54c4301333f8f90b162851..e861567b2c49b1f5f8f806db634b151a12cf4df1 100644 (file)
@@ -2268,7 +2268,7 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        err = register_netdev(netdev);
        if (err) {
                dev_err(dev, "Failed to register netdevice\n");
-               goto err_unregister_interrupts;
+               goto err_destroy_workqueue;
        }
 
        nic->msg_enable = debug;
@@ -2277,6 +2277,8 @@ static int nicvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        return 0;
 
+err_destroy_workqueue:
+       destroy_workqueue(nic->nicvf_rx_mode_wq);
 err_unregister_interrupts:
        nicvf_unregister_interrupts(nic);
 err_free_netdev: