2020-07-17 06:26:02

by Wang Hai

[permalink] [raw]
Subject: [PATCH] net: cxgb3: add missed destroy_workqueue in cxgb3 probe failure

The driver forgets to call destroy_workqueue when cxgb3 probe fails.
Add the missed calls to fix it.

Fixes: 4d22de3e6cc4 ("Add support for the latest 1G/10G Chelsio adapter, T3.")
Reported-by: Hulk Robot <[email protected]>
Signed-off-by: Wang Hai <[email protected]>
---
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
index 42c6e9379882..060d42803240 100644
--- a/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
@@ -3407,6 +3407,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
out_disable_device:
pci_disable_device(pdev);
out:
+ destroy_workqueue(cxgb3_wq);
return err;
}

--
2.17.1


2020-07-17 19:20:29

by Markus Elfring

[permalink] [raw]
Subject: Re: [PATCH] net: cxgb3: add missed destroy_workqueue in cxgb3 probe failure

> Add the missed calls to fix it.

You propose to add only a single function call.



> +++ b/drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c
> @@ -3407,6 +3407,7 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
> out_disable_device:
> pci_disable_device(pdev);
> out:
> + destroy_workqueue(cxgb3_wq);
> return err;
> }

I suggest to adjust also the usage of the label “out” accordingly.

Regards,
Markus

2020-07-18 01:42:30

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: cxgb3: add missed destroy_workqueue in cxgb3 probe failure

From: Wang Hai <[email protected]>
Date: Fri, 17 Jul 2020 14:21:17 +0800

> The driver forgets to call destroy_workqueue when cxgb3 probe fails.
> Add the missed calls to fix it.
>
> Fixes: 4d22de3e6cc4 ("Add support for the latest 1G/10G Chelsio adapter, T3.")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Wang Hai <[email protected]>

You have to handle the case that the probing of one or more devices
fails yet one or more others succeed.

And you can't know in advance how this will play out.

This is why the workqueue is unconditionally created, and only destroyed
on module remove.

2020-07-18 07:58:01

by Wang Hai

[permalink] [raw]
Subject: Re: [PATCH] net: cxgb3: add missed destroy_workqueue in cxgb3 probe failure


?? 2020/7/18 9:39, David Miller д??:
> From: Wang Hai <[email protected]>
> Date: Fri, 17 Jul 2020 14:21:17 +0800
>
>> The driver forgets to call destroy_workqueue when cxgb3 probe fails.
>> Add the missed calls to fix it.
>>
>> Fixes: 4d22de3e6cc4 ("Add support for the latest 1G/10G Chelsio adapter, T3.")
>> Reported-by: Hulk Robot <[email protected]>
>> Signed-off-by: Wang Hai <[email protected]>
> You have to handle the case that the probing of one or more devices
> fails yet one or more others succeed.
>
> And you can't know in advance how this will play out.
>
> This is why the workqueue is unconditionally created, and only destroyed
> on module remove.
>
> .
Thanks for your explanation. I got it.