2012-06-16 03:55:25

by Axel Lin

[permalink] [raw]
Subject: [PATCH 1/2] extcon: Set platform drvdata in gpio_extcon_probe() and fix irq leak

Add missing platform_set_drvdata() in gpio_extcon_probe(), otherwise calling
platform_get_drvdata in gpio_extcon_remove() returns NULL.

Also add missing free_irq call in gpio_extcon_remove().

Signed-off-by: Axel Lin <[email protected]>
---
drivers/extcon/extcon_gpio.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/extcon/extcon_gpio.c b/drivers/extcon/extcon_gpio.c
index fe7a07b..8a0dcc1 100644
--- a/drivers/extcon/extcon_gpio.c
+++ b/drivers/extcon/extcon_gpio.c
@@ -125,6 +125,7 @@ static int __devinit gpio_extcon_probe(struct platform_device *pdev)
if (ret < 0)
goto err_request_irq;

+ platform_set_drvdata(pdev, extcon_data);
/* Perform initial detection */
gpio_extcon_work(&extcon_data->work.work);

@@ -146,6 +147,7 @@ static int __devexit gpio_extcon_remove(struct platform_device *pdev)
struct gpio_extcon_data *extcon_data = platform_get_drvdata(pdev);

cancel_delayed_work_sync(&extcon_data->work);
+ free_irq(extcon_data->irq, extcon_data);
gpio_free(extcon_data->gpio);
extcon_dev_unregister(&extcon_data->edev);
devm_kfree(&pdev->dev, extcon_data);
--
1.7.9.5



2012-06-16 03:56:31

by Axel Lin

[permalink] [raw]
Subject: [PATCH 2/2] extcon: Convert extcon_gpio to devm_gpio_request_one

Also remove unneeded devm_kfree calls.

Signed-off-by: Axel Lin <[email protected]>
---
drivers/extcon/extcon_gpio.c | 17 +++++------------
1 file changed, 5 insertions(+), 12 deletions(-)

diff --git a/drivers/extcon/extcon_gpio.c b/drivers/extcon/extcon_gpio.c
index 8a0dcc1..fe3db45 100644
--- a/drivers/extcon/extcon_gpio.c
+++ b/drivers/extcon/extcon_gpio.c
@@ -105,25 +105,25 @@ static int __devinit gpio_extcon_probe(struct platform_device *pdev)

ret = extcon_dev_register(&extcon_data->edev, &pdev->dev);
if (ret < 0)
- goto err_extcon_dev_register;
+ return ret;

ret = gpio_request_one(extcon_data->gpio, GPIOF_DIR_IN, pdev->name);
if (ret < 0)
- goto err_request_gpio;
+ goto err;

INIT_DELAYED_WORK(&extcon_data->work, gpio_extcon_work);

extcon_data->irq = gpio_to_irq(extcon_data->gpio);
if (extcon_data->irq < 0) {
ret = extcon_data->irq;
- goto err_detect_irq_num_failed;
+ goto err;
}

ret = request_any_context_irq(extcon_data->irq, gpio_irq_handler,
pdata->irq_flags, pdev->name,
extcon_data);
if (ret < 0)
- goto err_request_irq;
+ goto err;

platform_set_drvdata(pdev, extcon_data);
/* Perform initial detection */
@@ -131,13 +131,8 @@ static int __devinit gpio_extcon_probe(struct platform_device *pdev)

return 0;

-err_request_irq:
-err_detect_irq_num_failed:
- gpio_free(extcon_data->gpio);
-err_request_gpio:
+err:
extcon_dev_unregister(&extcon_data->edev);
-err_extcon_dev_register:
- devm_kfree(&pdev->dev, extcon_data);

return ret;
}
@@ -148,9 +143,7 @@ static int __devexit gpio_extcon_remove(struct platform_device *pdev)

cancel_delayed_work_sync(&extcon_data->work);
free_irq(extcon_data->irq, extcon_data);
- gpio_free(extcon_data->gpio);
extcon_dev_unregister(&extcon_data->edev);
- devm_kfree(&pdev->dev, extcon_data);

return 0;
}
--
1.7.9.5


2012-06-19 10:19:11

by MyungJoo Ham

[permalink] [raw]
Subject: Re: [PATCH 1/2] extcon: Set platform drvdata in gpio_extcon_probe() and fix irq leak

> Add missing platform_set_drvdata() in gpio_extcon_probe(), otherwise calling
> platform_get_drvdata in gpio_extcon_remove() returns NULL.
>
> Also add missing free_irq call in gpio_extcon_remove().
>
> Signed-off-by: Axel Lin <[email protected]>

Thanks!


Acked-by: MyungJoo Ham <[email protected]>

I'll apply this patch to the extcon-for-next.
I would appear in http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next soon after syncing servers.


Cheers!
MyungJoo

> ---
> drivers/extcon/extcon_gpio.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/extcon/extcon_gpio.c b/drivers/extcon/extcon_gpio.c
> index fe7a07b..8a0dcc1 100644
> --- a/drivers/extcon/extcon_gpio.c
> +++ b/drivers/extcon/extcon_gpio.c
> @@ -125,6 +125,7 @@ static int __devinit gpio_extcon_probe(struct platform_device *pdev)
> if (ret < 0)
> goto err_request_irq;
>
> + platform_set_drvdata(pdev, extcon_data);
> /* Perform initial detection */
> gpio_extcon_work(&extcon_data->work.work);
>
> @@ -146,6 +147,7 @@ static int __devexit gpio_extcon_remove(struct platform_device *pdev)
> struct gpio_extcon_data *extcon_data = platform_get_drvdata(pdev);
>
> cancel_delayed_work_sync(&extcon_data->work);
> + free_irq(extcon_data->irq, extcon_data);
> gpio_free(extcon_data->gpio);
> extcon_dev_unregister(&extcon_data->edev);
> devm_kfree(&pdev->dev, extcon_data);
> --
> 1.7.9.5
>
????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2012-06-19 10:30:39

by MyungJoo Ham

[permalink] [raw]
Subject: Re: [PATCH 2/2] extcon: Convert extcon_gpio to devm_gpio_request_one

> Also remove unneeded devm_kfree calls.
>
> Signed-off-by: Axel Lin <[email protected]>

Acked-by: MyungJoo Ham <[email protected]>


Thanks!

You will be able to see this patch along with other extcon patches at the infradead repository soon:
http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next

Cheers!
MyungJoo.
????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2012-06-19 10:32:57

by Axel Lin

[permalink] [raw]
Subject: Re: [PATCH 1/2] extcon: Set platform drvdata in gpio_extcon_probe() and fix irq leak

2012/6/19 함명주 <[email protected]>:
>> Add missing platform_set_drvdata() in gpio_extcon_probe(), otherwise calling
>> platform_get_drvdata in gpio_extcon_remove() returns NULL.
>>
>> Also add missing free_irq call in gpio_extcon_remove().
>>
>> Signed-off-by: Axel Lin <[email protected]>
>
> Thanks!
>
>
> Acked-by: MyungJoo Ham <[email protected]>
>
> I'll apply this patch to the extcon-for-next.
> I would appear in http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next soon after syncing servers.

Hi MyungJoo,
These patches are already in today's linux-next tree.
It's already picked up by Greg.

Regards,
Axel

2012-06-19 16:44:06

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH 1/2] extcon: Set platform drvdata in gpio_extcon_probe() and fix irq leak

On Tue, Jun 19, 2012 at 10:19:07AM +0000, 함명주 wrote:
> > Add missing platform_set_drvdata() in gpio_extcon_probe(), otherwise calling
> > platform_get_drvdata in gpio_extcon_remove() returns NULL.
> >
> > Also add missing free_irq call in gpio_extcon_remove().
> >
> > Signed-off-by: Axel Lin <[email protected]>
>
> Thanks!
>
>
> Acked-by: MyungJoo Ham <[email protected]>
>
> I'll apply this patch to the extcon-for-next.
> I would appear in http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next soon after syncing servers.

Does this mean you are going to have a separate extcon git tree
somewhere, feeding into linux-next, and sending stuff directly to Linus?

I don't see an entry in the MAINTAINERS file saying this, which is why I
was picking up extcon patches, should I not be doing this?

confused,

greg k-h

2012-06-20 04:32:14

by MyungJoo Ham

[permalink] [raw]
Subject: Re: Re: [PATCH 1/2] extcon: Set platform drvdata in gpio_extcon_probe() and fix irq leak

> On Tue, Jun 19, 2012 at 10:19:07AM +0000, ?Ը??? wrote:
> > > Add missing platform_set_drvdata() in gpio_extcon_probe(), otherwise calling
> > > platform_get_drvdata in gpio_extcon_remove() returns NULL.
> > >
> > > Also add missing free_irq call in gpio_extcon_remove().
> > >
> > > Signed-off-by: Axel Lin <[email protected]>
> >
> > Thanks!
> >
> >
> > Acked-by: MyungJoo Ham <[email protected]>
> >
> > I'll apply this patch to the extcon-for-next.
> > I would appear in http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next soon after syncing servers.
>
> Does this mean you are going to have a separate extcon git tree
> somewhere, feeding into linux-next, and sending stuff directly to Linus?
>
> I don't see an entry in the MAINTAINERS file saying this, which is why I
> was picking up extcon patches, should I not be doing this?
>
> confused,
>
> greg k-h
>

You are right. We do not have MAINTAINERS entry for extcon.

I can wait until we have MAINTAINERS entry registered for extcon, which we have not request or submit, yet. Until then, I think you may pick up the extcon patches and I will simply follow your repositories (keep rebasing from yours)

Sorry for the confusion.


MyungJoo



????{.n?+???????+%?????ݶ??w??{.n?+????{??G?????{ay?ʇڙ?,j??f???h?????????z_??(?階?ݢj"???m??????G????????????&???~???iO???z??v?^?m???? ????????I?

2012-06-20 15:07:15

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: Re: [PATCH 1/2] extcon: Set platform drvdata in gpio_extcon_probe() and fix irq leak

On Wed, Jun 20, 2012 at 04:32:06AM +0000, MyungJoo Ham wrote:
> > On Tue, Jun 19, 2012 at 10:19:07AM +0000, 함명주 wrote:
> > > > Add missing platform_set_drvdata() in gpio_extcon_probe(), otherwise calling
> > > > platform_get_drvdata in gpio_extcon_remove() returns NULL.
> > > >
> > > > Also add missing free_irq call in gpio_extcon_remove().
> > > >
> > > > Signed-off-by: Axel Lin <[email protected]>
> > >
> > > Thanks!
> > >
> > >
> > > Acked-by: MyungJoo Ham <[email protected]>
> > >
> > > I'll apply this patch to the extcon-for-next.
> > > I would appear in http://git.infradead.org/users/kmpark/linux-samsung/shortlog/refs/heads/extcon-for-next soon after syncing servers.
> >
> > Does this mean you are going to have a separate extcon git tree
> > somewhere, feeding into linux-next, and sending stuff directly to Linus?
> >
> > I don't see an entry in the MAINTAINERS file saying this, which is why I
> > was picking up extcon patches, should I not be doing this?
> >
> > confused,
> >
> > greg k-h
> >
>
> You are right. We do not have MAINTAINERS entry for extcon.

You can easily fix that (hint, hint, hint...)

> I can wait until we have MAINTAINERS entry registered for extcon,
> which we have not request or submit, yet. Until then, I think you may
> pick up the extcon patches and I will simply follow your repositories
> (keep rebasing from yours)

My trees never need rebasing, why would you need to do that? What is
going into your tree that isn't in mine? Am I missing patches?

I would be very glad for you to take over this maintainership, if it's
something you want to do, otherwise I have no problem taking the
patches. It's up to you.

thanks,

greg k-h