diff mbox series

staging: wilc1000: Fix memleak in wilc_sdio_probe

Message ID 20200819115014.28955-1-dinghao.liu@zju.edu.cn (mailing list archive)
State Changes Requested
Delegated to: Kalle Valo
Headers show
Series staging: wilc1000: Fix memleak in wilc_sdio_probe | expand

Commit Message

Dinghao Liu Aug. 19, 2020, 11:50 a.m. UTC
When devm_clk_get() returns -EPROBE_DEFER, sdio_priv
should be freed just like when wilc_cfg80211_init()
fails.

Fixes: 8692b047e86cf ("staging: wilc1000: look for rtc_clk clock")
Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
---
 drivers/net/wireless/microchip/wilc1000/sdio.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Ajay Singh Aug. 20, 2020, 5:29 a.m. UTC | #1
Thanks for submitting the patch. The code changes looks okay to me.

The driver is now moved out of staging so 'staging' prefix is not
required in subject. For future patches on wilc driver, the 'staging'
prefix can be removed.

For this patch, I am not sure if Kalle can apply as is otherwise please
submit a patch by removing 'staging' from subject so it can be applied
directly.

Regards,
Ajay

On 19/08/20 5:20 pm, Dinghao Liu wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> When devm_clk_get() returns -EPROBE_DEFER, sdio_priv
> should be freed just like when wilc_cfg80211_init()
> fails.
> 
> Fixes: 8692b047e86cf ("staging: wilc1000: look for rtc_clk clock")
> Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn>
> ---
>  drivers/net/wireless/microchip/wilc1000/sdio.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/wireless/microchip/wilc1000/sdio.c b/drivers/net/wireless/microchip/wilc1000/sdio.c
> index 3ece7b0b0392..351ff909ab1c 100644
> --- a/drivers/net/wireless/microchip/wilc1000/sdio.c
> +++ b/drivers/net/wireless/microchip/wilc1000/sdio.c
> @@ -149,9 +149,10 @@ static int wilc_sdio_probe(struct sdio_func *func,
>         wilc->dev = &func->dev;
> 
>         wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc");
> -       if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER)
> +       if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) {
> +               kfree(sdio_priv);
>                 return -EPROBE_DEFER;
> -       else if (!IS_ERR(wilc->rtc_clk))
> +       } else if (!IS_ERR(wilc->rtc_clk))
>                 clk_prepare_enable(wilc->rtc_clk);
> 
>         dev_info(&func->dev, "Driver Initializing success\n");
> --
> 2.17.1
>
Dinghao Liu Aug. 20, 2020, 5:42 a.m. UTC | #2
Ajay.Kathat@microchip.com写道:
> Thanks for submitting the patch. The code changes looks okay to me.
> 
> The driver is now moved out of staging so 'staging' prefix is not
> required in subject. For future patches on wilc driver, the 'staging'
> prefix can be removed.
> 
> For this patch, I am not sure if Kalle can apply as is otherwise please
> submit a patch by removing 'staging' from subject so it can be applied
> directly.
> 
> Regards,
> Ajay
> 

Thanks for your correction. I'll send a new patch soon.

Regards,
Dinghao
diff mbox series

Patch

diff --git a/drivers/net/wireless/microchip/wilc1000/sdio.c b/drivers/net/wireless/microchip/wilc1000/sdio.c
index 3ece7b0b0392..351ff909ab1c 100644
--- a/drivers/net/wireless/microchip/wilc1000/sdio.c
+++ b/drivers/net/wireless/microchip/wilc1000/sdio.c
@@ -149,9 +149,10 @@  static int wilc_sdio_probe(struct sdio_func *func,
 	wilc->dev = &func->dev;
 
 	wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc");
-	if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER)
+	if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) {
+		kfree(sdio_priv);
 		return -EPROBE_DEFER;
-	else if (!IS_ERR(wilc->rtc_clk))
+	} else if (!IS_ERR(wilc->rtc_clk))
 		clk_prepare_enable(wilc->rtc_clk);
 
 	dev_info(&func->dev, "Driver Initializing success\n");