net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq

Message ID 20221203094125.602812-1-liuyongqiang13@huawei.com
State New
Headers
Series net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq |

Commit Message

Yongqiang Liu Dec. 3, 2022, 9:41 a.m. UTC
  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>
---
 drivers/net/ethernet/cavium/thunder/nicvf_main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
  

Comments

Pavan Chebbi Dec. 3, 2022, 3:14 p.m. UTC | #1
On Sat, Dec 3, 2022 at 3:11 PM Yongqiang Liu <liuyongqiang13@huawei.com> wrote:
>
> 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>
> ---
>  drivers/net/ethernet/cavium/thunder/nicvf_main.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
> index 98f3dc460ca7..f2f95493ec89 100644
> --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
> +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
> @@ -2239,7 +2239,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;
> @@ -2248,6 +2248,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:
> --
> 2.27.0
>
Looks good to me.
Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com>
  
patchwork-bot+netdevbpf@kernel.org Dec. 6, 2022, 11:50 a.m. UTC | #2
Hello:

This patch was applied to netdev/net.git (master)
by Paolo Abeni <pabeni@redhat.com>:

On Sat, 3 Dec 2022 09:41:25 +0000 you wrote:
> 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>
> ---
>  drivers/net/ethernet/cavium/thunder/nicvf_main.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

Here is the summary with links:
  - net: thunderx: Fix missing destroy_workqueue of nicvf_rx_mode_wq
    https://git.kernel.org/netdev/net/c/42330a32933f

You are awesome, thank you!
  

Patch

diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
index 98f3dc460ca7..f2f95493ec89 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c
@@ -2239,7 +2239,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;
@@ -2248,6 +2248,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: