summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYongqiang Liu <liuyongqiang13@huawei.com>2022-12-03 09:41:25 +0000
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-12-14 11:32:03 +0100
commit8d1aed7a117a114707dd04a63fddc7fdcce18132 (patch)
treeb7ead145c91eb2ae65f30a4417427aa9631eaf0a
parenta5cfbc199536d853abd45a9105fe097202c4f0ca (diff)
downloadlinux-stable-8d1aed7a117a114707dd04a63fddc7fdcce18132.tar.gz
linux-stable-8d1aed7a117a114707dd04a63fddc7fdcce18132.tar.bz2
linux-stable-8d1aed7a117a114707dd04a63fddc7fdcce18132.zip
net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq
[ 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: 2ecbe4f4a027 ("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>
-rw-r--r--drivers/net/ethernet/cavium/thunder/nicvf_main.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
index c00f1a7ffc15..488da767cfdf 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
@@ -2258,7 +2258,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;
@@ -2267,6 +2267,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: