2024-02-23 12:31:19

by Bartosz Golaszewski

[permalink] [raw]
Subject: [PATCH] pinctrl: don't put the reference to GPIO device in pinctrl_pins_show()

From: Bartosz Golaszewski <[email protected]>

The call to gpiod_to_gpio_device() does not increase the reference count
of the GPIO device struct so it must not be decreased. Remove the buggy
__free() decorator.

Reported-by: David Arcari <[email protected]>
Signed-off-by: Bartosz Golaszewski <[email protected]>
---
drivers/pinctrl/core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
index ee56856cb80c..bbcdece83bf4 100644
--- a/drivers/pinctrl/core.c
+++ b/drivers/pinctrl/core.c
@@ -1644,7 +1644,7 @@ static int pinctrl_pins_show(struct seq_file *s, void *what)
const struct pinctrl_ops *ops = pctldev->desc->pctlops;
unsigned int i, pin;
#ifdef CONFIG_GPIOLIB
- struct gpio_device *gdev __free(gpio_device_put) = NULL;
+ struct gpio_device *gdev = NULL;
struct pinctrl_gpio_range *range;
int gpio_num;
#endif
--
2.40.1



2024-02-29 13:37:34

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH] pinctrl: don't put the reference to GPIO device in pinctrl_pins_show()

On Fri, Feb 23, 2024 at 1:32 PM Bartosz Golaszewski <[email protected]> wrote:

> From: Bartosz Golaszewski <[email protected]>
>
> The call to gpiod_to_gpio_device() does not increase the reference count
> of the GPIO device struct so it must not be decreased. Remove the buggy
> __free() decorator.
>
> Fixes: 524fc108b895 ("pinctrl: stop using gpiod_to_chip()")
> Reported-by: David Arcari <[email protected]>
> Signed-off-by: Bartosz Golaszewski <[email protected]>

Patch applied for fixes!

Yours,
Linus Walleij

2024-02-23 12:34:51

by Bartosz Golaszewski

[permalink] [raw]
Subject: Re: [PATCH] pinctrl: don't put the reference to GPIO device in pinctrl_pins_show()

On Fri, Feb 23, 2024 at 1:30 PM Bartosz Golaszewski <[email protected]> wrote:
>
> From: Bartosz Golaszewski <[email protected]>
>
> The call to gpiod_to_gpio_device() does not increase the reference count
> of the GPIO device struct so it must not be decreased. Remove the buggy
> __free() decorator.
>
> Reported-by: David Arcari <[email protected]>
> Signed-off-by: Bartosz Golaszewski <[email protected]>
> ---
> drivers/pinctrl/core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
> index ee56856cb80c..bbcdece83bf4 100644
> --- a/drivers/pinctrl/core.c
> +++ b/drivers/pinctrl/core.c
> @@ -1644,7 +1644,7 @@ static int pinctrl_pins_show(struct seq_file *s, void *what)
> const struct pinctrl_ops *ops = pctldev->desc->pctlops;
> unsigned int i, pin;
> #ifdef CONFIG_GPIOLIB
> - struct gpio_device *gdev __free(gpio_device_put) = NULL;
> + struct gpio_device *gdev = NULL;
> struct pinctrl_gpio_range *range;
> int gpio_num;
> #endif
> --
> 2.40.1
>

Linus,

Disregard this one, it had no Fixes tag but I didn't press Ctrl-c in time.

Bart