diff mbox

pinctrl: meson: Drop pinctrl_unregister for devm_ registered device

Message ID 1469544718-32001-1-git-send-email-weiyj.lk@gmail.com
State Not Applicable
Headers show

Commit Message

Wei Yongjun July 26, 2016, 2:51 p.m. UTC
It's not necessary to unregister pin controller device registered
with devm_pinctrl_register() and using pinctrl_unregister() leads
to a double free.

This is detected by Coccinelle semantic patch.

Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>
---
 drivers/pinctrl/meson/pinctrl-meson.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

Comments

dmitry.torokhov@gmail.com July 26, 2016, 5 p.m. UTC | #1
On Tue, Jul 26, 2016 at 02:51:58PM +0000, Wei Yongjun wrote:
> It's not necessary to unregister pin controller device registered
> with devm_pinctrl_register() and using pinctrl_unregister() leads
> to a double free.
> 
> This is detected by Coccinelle semantic patch.
> 
> Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>

Fixes: e649f7ec8c5f ("pinctrl: meson: Use devm_pinctrl_register() for
pinctrl registration")

Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

> ---
>  drivers/pinctrl/meson/pinctrl-meson.c | 8 +-------
>  1 file changed, 1 insertion(+), 7 deletions(-)
> 
> diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
> index 11623c6..44e69c9 100644
> --- a/drivers/pinctrl/meson/pinctrl-meson.c
> +++ b/drivers/pinctrl/meson/pinctrl-meson.c
> @@ -727,13 +727,7 @@ static int meson_pinctrl_probe(struct platform_device *pdev)
>  		return PTR_ERR(pc->pcdev);
>  	}
>  
> -	ret = meson_gpiolib_register(pc);
> -	if (ret) {
> -		pinctrl_unregister(pc->pcdev);
> -		return ret;
> -	}
> -
> -	return 0;
> +	return meson_gpiolib_register(pc);
>  }
>  
>  static struct platform_driver meson_pinctrl_driver = {
> 

Thanks.
Kevin Hilman July 26, 2016, 9:56 p.m. UTC | #2
Dmitry Torokhov <dmitry.torokhov@gmail.com> writes:

> On Tue, Jul 26, 2016 at 02:51:58PM +0000, Wei Yongjun wrote:
>> It's not necessary to unregister pin controller device registered
>> with devm_pinctrl_register() and using pinctrl_unregister() leads
>> to a double free.
>> 
>> This is detected by Coccinelle semantic patch.
>> 
>> Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>
>
> Fixes: e649f7ec8c5f ("pinctrl: meson: Use devm_pinctrl_register() for
> pinctrl registration")
>
> Reviewed-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>

Acked-by: Kevin Hilman <khilman@baylibre.com>
Linus Walleij Aug. 4, 2016, 8:10 a.m. UTC | #3
On Tue, Jul 26, 2016 at 4:51 PM, Wei Yongjun <weiyj.lk@gmail.com> wrote:

> It's not necessary to unregister pin controller device registered
> with devm_pinctrl_register() and using pinctrl_unregister() leads
> to a double free.
>
> This is detected by Coccinelle semantic patch.
>
> Signed-off-by: Wei Yongjun <weiyj.lk@gmail.com>

Patch applied for fixes with Dmitry's and Kevin's tags.

Yours,
Linus Walleij
diff mbox

Patch

diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index 11623c6..44e69c9 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -727,13 +727,7 @@  static int meson_pinctrl_probe(struct platform_device *pdev)
 		return PTR_ERR(pc->pcdev);
 	}
 
-	ret = meson_gpiolib_register(pc);
-	if (ret) {
-		pinctrl_unregister(pc->pcdev);
-		return ret;
-	}
-
-	return 0;
+	return meson_gpiolib_register(pc);
 }
 
 static struct platform_driver meson_pinctrl_driver = {