2022-09-06 02:58:10

by Dmitry Torokhov

[permalink] [raw]
Subject: [PATCH] PCI: apple: do not leak reset GPIO on unbind/unload/error

The driver allocates reset GPIO in apple_pcie_setup_port() but neither
releases the resource, nor uses devm API to have it released
automatically.

Let's fix this by switching to devm API. While at it let's use generic
devm_fwnode_gpiod_get() instead of OF-specific gpiod_get_from_of_node()
- this will allow us top stop exporting the latter down the road.

Fixes: 1e33888fbe44 ("PCI: apple: Add initial hardware bring-up")
Signed-off-by: Dmitry Torokhov <[email protected]>
---

This patch has been pulled out of the series
https://lore.kernel.org/all/20220903-gpiod_get_from_of_node-remove-v1-0-b29adfb27a6c@gmail.com/
with updated justification (leak fix vs pure API deprecation).

drivers/pci/controller/pcie-apple.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
index a2c3c207a04b..66f37e403a09 100644
--- a/drivers/pci/controller/pcie-apple.c
+++ b/drivers/pci/controller/pcie-apple.c
@@ -516,8 +516,8 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie,
u32 stat, idx;
int ret, i;

- reset = gpiod_get_from_of_node(np, "reset-gpios", 0,
- GPIOD_OUT_LOW, "PERST#");
+ reset = devm_fwnode_gpiod_get(pcie->dev, of_fwnode_handle(np), "reset",
+ GPIOD_OUT_LOW, "PERST#");
if (IS_ERR(reset))
return PTR_ERR(reset);

--
2.37.2.789.g6183377224-goog


--
Dmitry


2022-09-06 07:36:31

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH] PCI: apple: do not leak reset GPIO on unbind/unload/error

On Tue, 06 Sep 2022 03:15:23 +0100,
Dmitry Torokhov <[email protected]> wrote:
>
> The driver allocates reset GPIO in apple_pcie_setup_port() but neither
> releases the resource, nor uses devm API to have it released
> automatically.
>
> Let's fix this by switching to devm API. While at it let's use generic
> devm_fwnode_gpiod_get() instead of OF-specific gpiod_get_from_of_node()
> - this will allow us top stop exporting the latter down the road.
>
> Fixes: 1e33888fbe44 ("PCI: apple: Add initial hardware bring-up")
> Signed-off-by: Dmitry Torokhov <[email protected]>

Acked-by: Marc Zyngier <[email protected]>

M.

--
Without deviation from the norm, progress is not possible.

2022-09-06 07:41:17

by Hector Martin

[permalink] [raw]
Subject: Re: [PATCH] PCI: apple: do not leak reset GPIO on unbind/unload/error

On 06/09/2022 11.15, Dmitry Torokhov wrote:
> The driver allocates reset GPIO in apple_pcie_setup_port() but neither
> releases the resource, nor uses devm API to have it released
> automatically.
>
> Let's fix this by switching to devm API. While at it let's use generic
> devm_fwnode_gpiod_get() instead of OF-specific gpiod_get_from_of_node()
> - this will allow us top stop exporting the latter down the road.
>
> Fixes: 1e33888fbe44 ("PCI: apple: Add initial hardware bring-up")
> Signed-off-by: Dmitry Torokhov <[email protected]>
> ---
>
> This patch has been pulled out of the series
> https://lore.kernel.org/all/20220903-gpiod_get_from_of_node-remove-v1-0-b29adfb27a6c@gmail.com/
> with updated justification (leak fix vs pure API deprecation).
>
> drivers/pci/controller/pcie-apple.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
> index a2c3c207a04b..66f37e403a09 100644
> --- a/drivers/pci/controller/pcie-apple.c
> +++ b/drivers/pci/controller/pcie-apple.c
> @@ -516,8 +516,8 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie,
> u32 stat, idx;
> int ret, i;
>
> - reset = gpiod_get_from_of_node(np, "reset-gpios", 0,
> - GPIOD_OUT_LOW, "PERST#");
> + reset = devm_fwnode_gpiod_get(pcie->dev, of_fwnode_handle(np), "reset",
> + GPIOD_OUT_LOW, "PERST#");
> if (IS_ERR(reset))
> return PTR_ERR(reset);
>

Reviewed-by: Hector Martin <[email protected]>

I actually caught this one a while back, just didn't get around to
submitting it yet since it's part of my WIP PCIe power management branch
(that I'm getting back to next week or so!) :)

https://github.com/AsahiLinux/linux/commit/04f5628fc73ea0369f66c83ba473cb6f8187d2b3

- Hector

2022-09-09 09:19:58

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH] PCI: apple: do not leak reset GPIO on unbind/unload/error

Nit: please capitalize beginning of the sentence in the subject - that's
what we do for PCI controllers commits.

"PCI: apple: Do not leak reset GPIO on unbind/unload/error"

On Mon, Sep 05, 2022 at 07:15:23PM -0700, Dmitry Torokhov wrote:
> The driver allocates reset GPIO in apple_pcie_setup_port() but neither
> releases the resource, nor uses devm API to have it released
> automatically.
>
> Let's fix this by switching to devm API. While at it let's use generic
> devm_fwnode_gpiod_get() instead of OF-specific gpiod_get_from_of_node()
> - this will allow us top stop exporting the latter down the road.
>
> Fixes: 1e33888fbe44 ("PCI: apple: Add initial hardware bring-up")

Should I take it via the PCI tree ? Usually we send fixes through -rcX
only if the fix applies to code merged last merge window, which is not
the case here, so I would queue if for v6.1.

Lorenzo

> Signed-off-by: Dmitry Torokhov <[email protected]>
> ---
>
> This patch has been pulled out of the series
> https://lore.kernel.org/all/20220903-gpiod_get_from_of_node-remove-v1-0-b29adfb27a6c@gmail.com/
> with updated justification (leak fix vs pure API deprecation).
>
> drivers/pci/controller/pcie-apple.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/pcie-apple.c b/drivers/pci/controller/pcie-apple.c
> index a2c3c207a04b..66f37e403a09 100644
> --- a/drivers/pci/controller/pcie-apple.c
> +++ b/drivers/pci/controller/pcie-apple.c
> @@ -516,8 +516,8 @@ static int apple_pcie_setup_port(struct apple_pcie *pcie,
> u32 stat, idx;
> int ret, i;
>
> - reset = gpiod_get_from_of_node(np, "reset-gpios", 0,
> - GPIOD_OUT_LOW, "PERST#");
> + reset = devm_fwnode_gpiod_get(pcie->dev, of_fwnode_handle(np), "reset",
> + GPIOD_OUT_LOW, "PERST#");
> if (IS_ERR(reset))
> return PTR_ERR(reset);
>
> --
> 2.37.2.789.g6183377224-goog
>
>
> --
> Dmitry

2022-09-09 13:04:37

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH] PCI: apple: do not leak reset GPIO on unbind/unload/error

On 2022-09-09 10:16, Lorenzo Pieralisi wrote:
> Nit: please capitalize beginning of the sentence in the subject -
> that's
> what we do for PCI controllers commits.
>
> "PCI: apple: Do not leak reset GPIO on unbind/unload/error"
>
> On Mon, Sep 05, 2022 at 07:15:23PM -0700, Dmitry Torokhov wrote:
>> The driver allocates reset GPIO in apple_pcie_setup_port() but neither
>> releases the resource, nor uses devm API to have it released
>> automatically.
>>
>> Let's fix this by switching to devm API. While at it let's use generic
>> devm_fwnode_gpiod_get() instead of OF-specific
>> gpiod_get_from_of_node()
>> - this will allow us top stop exporting the latter down the road.
>>
>> Fixes: 1e33888fbe44 ("PCI: apple: Add initial hardware bring-up")
>
> Should I take it via the PCI tree ? Usually we send fixes through -rcX
> only if the fix applies to code merged last merge window, which is not
> the case here, so I would queue if for v6.1.

I think 6.1 is perfectly fine.

Thanks,

M.
--
Jazz is not dead. It just smells funny...

2022-09-14 16:07:45

by Lorenzo Pieralisi

[permalink] [raw]
Subject: Re: [PATCH] PCI: apple: do not leak reset GPIO on unbind/unload/error

On Mon, 5 Sep 2022 19:15:23 -0700, Dmitry Torokhov wrote:
> The driver allocates reset GPIO in apple_pcie_setup_port() but neither
> releases the resource, nor uses devm API to have it released
> automatically.
>
> Let's fix this by switching to devm API. While at it let's use generic
> devm_fwnode_gpiod_get() instead of OF-specific gpiod_get_from_of_node()
> - this will allow us top stop exporting the latter down the road.
>
> [...]

Applied to pci/apple, thanks!

[1/1] PCI: apple: do not leak reset GPIO on unbind/unload/error
https://git.kernel.org/lpieralisi/pci/c/a6b9ede1f3df

Thanks,
Lorenzo