* [PATCH] PCI: iproc: Use __free(device_node) in iproc_pcie_msi_enable()
@ 2026-09-22 21:08 Fuad Tabba
2026-09-22 21:49 ` Marek Vasut
2026-09-23 16:34 ` Jonathan Cameron
0 siblings, 2 replies; 4+ messages in thread
From: Fuad Tabba @ 2026-09-22 21:08 UTC (permalink / raw)
To: Manivannan Sadhasivam, Krzysztof Wilczyński,
Lorenzo Pieralisi, Bjorn Helgaas
Cc: Rob Herring, Ray Jui, Scott Branden, bcm-kernel-feedback-list,
Marek Vasut, linux-pci, linux-arm-kernel, linux-kernel,
Will Deacon, Fuad Tabba
Declare msi_node with __free(device_node) and drop the out_put_node
label and its goto: the scoped cleanup puts the MSI controller node on
every return, as the label did.
No functional change intended.
Suggested-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Link: https://lore.kernel.org/linux-pci/61488ddc-b346-4ba3-b32a-e972a3bd75a4@mailbox.org/
Signed-off-by: Fuad Tabba <fuad.tabba@linux.dev>
---
drivers/pci/controller/pcie-iproc.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
index afb3aa38ac6bb..b4f4e6e1d4b41 100644
--- a/drivers/pci/controller/pcie-iproc.c
+++ b/drivers/pci/controller/pcie-iproc.c
@@ -1338,7 +1338,7 @@ static int iproc_pcie_msi_steer(struct iproc_pcie *pcie,
static int iproc_pcie_msi_enable(struct iproc_pcie *pcie)
{
- struct device_node *msi_node = NULL;
+ struct device_node *msi_node __free(device_node) = NULL;
int ret;
/*
@@ -1357,18 +1357,14 @@ static int iproc_pcie_msi_enable(struct iproc_pcie *pcie)
if (pcie->need_msi_steer) {
ret = iproc_pcie_msi_steer(pcie, msi_node);
if (ret)
- goto out_put_node;
+ return ret;
}
/*
* If another MSI controller is being used, the call below should fail
* but that is okay
*/
- ret = iproc_msi_init(pcie, msi_node);
-
-out_put_node:
- of_node_put(msi_node);
- return ret;
+ return iproc_msi_init(pcie, msi_node);
}
static void iproc_pcie_msi_disable(struct iproc_pcie *pcie)
base-commit: fd73f4a6659897191fa0d40695fe370925dd3780
--
2.39.5
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] PCI: iproc: Use __free(device_node) in iproc_pcie_msi_enable()
2026-09-22 21:08 [PATCH] PCI: iproc: Use __free(device_node) in iproc_pcie_msi_enable() Fuad Tabba
@ 2026-09-22 21:49 ` Marek Vasut
2026-09-23 16:34 ` Jonathan Cameron
1 sibling, 0 replies; 4+ messages in thread
From: Marek Vasut @ 2026-09-22 21:49 UTC (permalink / raw)
To: Fuad Tabba, Manivannan Sadhasivam, Krzysztof Wilczyński,
Lorenzo Pieralisi, Bjorn Helgaas
Cc: Rob Herring, Ray Jui, Scott Branden, bcm-kernel-feedback-list,
linux-pci, linux-arm-kernel, linux-kernel, Will Deacon,
Fuad Tabba
On 9/22/26 11:08 PM, Fuad Tabba wrote:
> Declare msi_node with __free(device_node) and drop the out_put_node
> label and its goto: the scoped cleanup puts the MSI controller node on
> every return, as the label did.
>
> No functional change intended.
>
> Suggested-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> Link: https://lore.kernel.org/linux-pci/61488ddc-b346-4ba3-b32a-e972a3bd75a4@mailbox.org/
> Signed-off-by: Fuad Tabba <fuad.tabba@linux.dev>
> ---
> drivers/pci/controller/pcie-iproc.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
This is nice.
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Thank you.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PCI: iproc: Use __free(device_node) in iproc_pcie_msi_enable()
2026-09-22 21:08 [PATCH] PCI: iproc: Use __free(device_node) in iproc_pcie_msi_enable() Fuad Tabba
2026-09-22 21:49 ` Marek Vasut
@ 2026-09-23 16:34 ` Jonathan Cameron
2026-09-23 18:08 ` Fuad Tabba
1 sibling, 1 reply; 4+ messages in thread
From: Jonathan Cameron @ 2026-09-23 16:34 UTC (permalink / raw)
To: Fuad Tabba
Cc: Manivannan Sadhasivam, Krzysztof Wilczyński,
Lorenzo Pieralisi, Bjorn Helgaas, Rob Herring, Ray Jui,
Scott Branden, bcm-kernel-feedback-list, Marek Vasut, linux-pci,
linux-arm-kernel, linux-kernel, Will Deacon, Fuad Tabba
On Tue, 22 Sep 2026 22:08:39 +0100
Fuad Tabba <fuad.tabba@linux.dev> wrote:
> Declare msi_node with __free(device_node) and drop the out_put_node
> label and its goto: the scoped cleanup puts the MSI controller node on
> every return, as the label did.
>
> No functional change intended.
>
> Suggested-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
> Link: https://lore.kernel.org/linux-pci/61488ddc-b346-4ba3-b32a-e972a3bd75a4@mailbox.org/
> Signed-off-by: Fuad Tabba <fuad.tabba@linux.dev>
Hi Fuad,
See the guidance notes in cleanup.h. Linus has stated a couple
of times that he really never wants to see = NULL pattern miles
from where it is allocated. Best you can do here is shift
it down to immediately before of_msi_xlate(). It is fine to declare
variables with destructors like this inline (i.e. not at top of function).
Admittedly if the scope shown here had gone a few lines further this
would look less bad!
> ---
> drivers/pci/controller/pcie-iproc.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
> index afb3aa38ac6bb..b4f4e6e1d4b41 100644
> --- a/drivers/pci/controller/pcie-iproc.c
> +++ b/drivers/pci/controller/pcie-iproc.c
> @@ -1338,7 +1338,7 @@ static int iproc_pcie_msi_steer(struct iproc_pcie *pcie,
>
> static int iproc_pcie_msi_enable(struct iproc_pcie *pcie)
> {
> - struct device_node *msi_node = NULL;
> + struct device_node *msi_node __free(device_node) = NULL;
> int ret;
>
> /*
> @@ -1357,18 +1357,14 @@ static int iproc_pcie_msi_enable(struct iproc_pcie *pcie)
> if (pcie->need_msi_steer) {
> ret = iproc_pcie_msi_steer(pcie, msi_node);
> if (ret)
> - goto out_put_node;
> + return ret;
> }
>
> /*
> * If another MSI controller is being used, the call below should fail
> * but that is okay
> */
> - ret = iproc_msi_init(pcie, msi_node);
> -
> -out_put_node:
> - of_node_put(msi_node);
> - return ret;
> + return iproc_msi_init(pcie, msi_node);
> }
>
> static void iproc_pcie_msi_disable(struct iproc_pcie *pcie)
>
> base-commit: fd73f4a6659897191fa0d40695fe370925dd3780
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] PCI: iproc: Use __free(device_node) in iproc_pcie_msi_enable()
2026-09-23 16:34 ` Jonathan Cameron
@ 2026-09-23 18:08 ` Fuad Tabba
0 siblings, 0 replies; 4+ messages in thread
From: Fuad Tabba @ 2026-09-23 18:08 UTC (permalink / raw)
To: Jonathan Cameron
Cc: Manivannan Sadhasivam, Krzysztof Wilczyński,
Lorenzo Pieralisi, Bjorn Helgaas, Rob Herring, Ray Jui,
Scott Branden, bcm-kernel-feedback-list, Marek Vasut, linux-pci,
linux-arm-kernel, linux-kernel, Will Deacon
Hi Jonathan,
On Wed, 23 Sept 2026 at 17:34, Jonathan Cameron
<jonathan.cameron@oss.qualcomm.com> wrote:
[...]
> Hi Fuad,
>
> See the guidance notes in cleanup.h. Linus has stated a couple
> of times that he really never wants to see = NULL pattern miles
> from where it is allocated. Best you can do here is shift
> it down to immediately before of_msi_xlate(). It is fine to declare
> variables with destructors like this inline (i.e. not at top of function).
>
> Admittedly if the scope shown here had gone a few lines further this
> would look less bad!
Done: https://lore.kernel.org/all/20260923180703.3901185-1-fuad.tabba@linux.dev/
Cheers,
/fuad
>
>
> > ---
> > drivers/pci/controller/pcie-iproc.c | 10 +++-------
> > 1 file changed, 3 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/pci/controller/pcie-iproc.c b/drivers/pci/controller/pcie-iproc.c
> > index afb3aa38ac6bb..b4f4e6e1d4b41 100644
> > --- a/drivers/pci/controller/pcie-iproc.c
> > +++ b/drivers/pci/controller/pcie-iproc.c
> > @@ -1338,7 +1338,7 @@ static int iproc_pcie_msi_steer(struct iproc_pcie *pcie,
> >
> > static int iproc_pcie_msi_enable(struct iproc_pcie *pcie)
> > {
> > - struct device_node *msi_node = NULL;
> > + struct device_node *msi_node __free(device_node) = NULL;
> > int ret;
> >
> > /*
> > @@ -1357,18 +1357,14 @@ static int iproc_pcie_msi_enable(struct iproc_pcie *pcie)
> > if (pcie->need_msi_steer) {
> > ret = iproc_pcie_msi_steer(pcie, msi_node);
> > if (ret)
> > - goto out_put_node;
> > + return ret;
> > }
> >
> > /*
> > * If another MSI controller is being used, the call below should fail
> > * but that is okay
> > */
> > - ret = iproc_msi_init(pcie, msi_node);
> > -
> > -out_put_node:
> > - of_node_put(msi_node);
> > - return ret;
> > + return iproc_msi_init(pcie, msi_node);
> > }
> >
> > static void iproc_pcie_msi_disable(struct iproc_pcie *pcie)
> >
> > base-commit: fd73f4a6659897191fa0d40695fe370925dd3780
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-09-23 18:09 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-22 21:08 [PATCH] PCI: iproc: Use __free(device_node) in iproc_pcie_msi_enable() Fuad Tabba
2026-09-22 21:49 ` Marek Vasut
2026-09-23 16:34 ` Jonathan Cameron
2026-09-23 18:08 ` Fuad Tabba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®