2015-06-25 15:14:09

by Grygorii Strashko

[permalink] [raw]
Subject: [PATCH] gpio: omap: prevent module from being unloaded while in use

OMAP GPIO driver allowed to be built as loadable module, but it
doesn't set owner field in GPIO chip structure. As result,
module_get/put() API is not working and it's possible to unload
OMAP driver while in use:

omap_gpio 48051000.gpio: REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED

Hence, add missing configuration.

Cc: Tony Lindgren <[email protected]>
Fixes: cac089f9026e ('gpio: omap: Allow building as a loadable module')
Signed-off-by: Grygorii Strashko <[email protected]>
---
Hi Linus,

Seems this one is for 4.2-rc.

drivers/gpio/gpio-omap.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index a0ad803..61a731f 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1187,6 +1187,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
bank->irq = res->start;
bank->dev = dev;
bank->chip.dev = dev;
+ bank->chip.owner = THIS_MODULE;
bank->dbck_flag = pdata->dbck_flag;
bank->stride = pdata->bank_stride;
bank->width = pdata->bank_width;
--
2.4.4


2015-06-30 13:52:54

by Alexandre Courbot

[permalink] [raw]
Subject: Re: [PATCH] gpio: omap: prevent module from being unloaded while in use

On Fri, Jun 26, 2015 at 12:13 AM, Grygorii Strashko
<[email protected]> wrote:
> OMAP GPIO driver allowed to be built as loadable module, but it
> doesn't set owner field in GPIO chip structure. As result,
> module_get/put() API is not working and it's possible to unload
> OMAP driver while in use:
>
> omap_gpio 48051000.gpio: REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED
>
> Hence, add missing configuration.

Isn't this also fixed by your other patch "gpiolib: assign chip owner
to dev->driver->owner if not set"?

Nevertheless,

Acked-by: Alexandre Courbot <[email protected]>

For inclusion into -rc if the other patch is for the next cycle.

>
> Cc: Tony Lindgren <[email protected]>
> Fixes: cac089f9026e ('gpio: omap: Allow building as a loadable module')
> Signed-off-by: Grygorii Strashko <[email protected]>
> ---
> Hi Linus,
>
> Seems this one is for 4.2-rc.
>
> drivers/gpio/gpio-omap.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index a0ad803..61a731f 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -1187,6 +1187,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
> bank->irq = res->start;
> bank->dev = dev;
> bank->chip.dev = dev;
> + bank->chip.owner = THIS_MODULE;
> bank->dbck_flag = pdata->dbck_flag;
> bank->stride = pdata->bank_stride;
> bank->width = pdata->bank_width;
> --
> 2.4.4
>

2015-07-06 15:16:05

by Grygorii Strashko

[permalink] [raw]
Subject: Re: [PATCH] gpio: omap: prevent module from being unloaded while in use

On 06/30/2015 04:52 PM, Alexandre Courbot wrote:
> On Fri, Jun 26, 2015 at 12:13 AM, Grygorii Strashko
> <[email protected]> wrote:
>> OMAP GPIO driver allowed to be built as loadable module, but it
>> doesn't set owner field in GPIO chip structure. As result,
>> module_get/put() API is not working and it's possible to unload
>> OMAP driver while in use:
>>
>> omap_gpio 48051000.gpio: REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED
>>
>> Hence, add missing configuration.
>
> Isn't this also fixed by your other patch "gpiolib: assign chip owner
> to dev->driver->owner if not set"?
>
> Nevertheless,
>
> Acked-by: Alexandre Courbot <[email protected]>
>
> For inclusion into -rc if the other patch is for the next cycle.

Yes. I've sent this one for -rc as it's 100% fix and was not sure about
destiny of patch "gpiolib: assign chip owner.." :)


>
>>
>> Cc: Tony Lindgren <[email protected]>
>> Fixes: cac089f9026e ('gpio: omap: Allow building as a loadable module')
>> Signed-off-by: Grygorii Strashko <[email protected]>
>> ---
>> Hi Linus,
>>
>> Seems this one is for 4.2-rc.
>>
>> drivers/gpio/gpio-omap.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
>> index a0ad803..61a731f 100644
>> --- a/drivers/gpio/gpio-omap.c
>> +++ b/drivers/gpio/gpio-omap.c
>> @@ -1187,6 +1187,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
>> bank->irq = res->start;
>> bank->dev = dev;
>> bank->chip.dev = dev;
>> + bank->chip.owner = THIS_MODULE;
>> bank->dbck_flag = pdata->dbck_flag;
>> bank->stride = pdata->bank_stride;
>> bank->width = pdata->bank_width;
>> --
>> 2.4.4
>>


--
regards,
-grygorii

2015-07-16 12:27:21

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH] gpio: omap: prevent module from being unloaded while in use

On Thu, Jun 25, 2015 at 5:13 PM, Grygorii Strashko
<[email protected]> wrote:

> OMAP GPIO driver allowed to be built as loadable module, but it
> doesn't set owner field in GPIO chip structure. As result,
> module_get/put() API is not working and it's possible to unload
> OMAP driver while in use:
>
> omap_gpio 48051000.gpio: REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED
>
> Hence, add missing configuration.
>
> Cc: Tony Lindgren <[email protected]>
> Fixes: cac089f9026e ('gpio: omap: Allow building as a loadable module')
> Signed-off-by: Grygorii Strashko <[email protected]>
> ---
> Hi Linus,
>
> Seems this one is for 4.2-rc.

Yup applied for fixes with Alex' ACK.

The bigger fix is applied for devel and the best way to handle this
is open for discussion.

Yours,
Linus Walleij