diff mbox series

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

Message ID YxatO5OaI2RpxQ2M@google.com (mailing list archive)
State Accepted
Delegated to: Lorenzo Pieralisi
Headers show
Series PCI: apple: do not leak reset GPIO on unbind/unload/error | expand

Commit Message

Dmitry Torokhov Sept. 6, 2022, 2:15 a.m. UTC
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 <dmitry.torokhov@gmail.com>
---

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(-)

Comments

Marc Zyngier Sept. 6, 2022, 7:09 a.m. UTC | #1
On Tue, 06 Sep 2022 03:15:23 +0100,
Dmitry Torokhov <dmitry.torokhov@gmail.com> 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 <dmitry.torokhov@gmail.com>

Acked-by: Marc Zyngier <maz@kernel.org>

	M.
Hector Martin Sept. 6, 2022, 7:13 a.m. UTC | #2
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 <dmitry.torokhov@gmail.com>
> ---
> 
> 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 <marcan@marcan.st>

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
Lorenzo Pieralisi Sept. 9, 2022, 9:16 a.m. UTC | #3
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 <dmitry.torokhov@gmail.com>
> ---
> 
> 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
Marc Zyngier Sept. 9, 2022, 12:48 p.m. UTC | #4
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.
Lorenzo Pieralisi Sept. 14, 2022, 3:47 p.m. UTC | #5
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
diff mbox series

Patch

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);