All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain()
@ 2016-10-17 14:54 Wei Yongjun
  2016-11-11 21:38 ` Bjorn Helgaas
  0 siblings, 1 reply; 7+ messages in thread
From: Wei Yongjun @ 2016-10-17 14:54 UTC (permalink / raw)
  To: Kishon Vijay Abraham I, Bjorn Helgaas; +Cc: Wei Yongjun, linux-omap, linux-pci

From: Wei Yongjun <weiyongjun1@huawei.com>

This node pointer is returned by of_get_next_child() with refcount
incremented in this function. of_node_put() on it before exitting
this function on error.

This is detected by Coccinelle semantic patch.

Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
---
 drivers/pci/host/pci-dra7xx.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/host/pci-dra7xx.c
index 9595fad..79297e9 100644
--- a/drivers/pci/host/pci-dra7xx.c
+++ b/drivers/pci/host/pci-dra7xx.c
@@ -177,6 +177,7 @@ static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp)
 					       &intx_domain_ops, pp);
 	if (!pp->irq_domain) {
 		dev_err(dev, "Failed to get a INTx IRQ domain\n");
+		of_node_put(pcie_intc_node);
 		return -ENODEV;
 	}


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain()
  2016-10-17 14:54 [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain() Wei Yongjun
@ 2016-11-11 21:38 ` Bjorn Helgaas
  2016-11-12  7:09     ` Kishon Vijay Abraham I
  0 siblings, 1 reply; 7+ messages in thread
From: Bjorn Helgaas @ 2016-11-11 21:38 UTC (permalink / raw)
  To: Wei Yongjun
  Cc: Kishon Vijay Abraham I, Bjorn Helgaas, Wei Yongjun, linux-omap,
	linux-pci

On Mon, Oct 17, 2016 at 02:54:37PM +0000, Wei Yongjun wrote:
> From: Wei Yongjun <weiyongjun1@huawei.com>
> 
> This node pointer is returned by of_get_next_child() with refcount
> incremented in this function. of_node_put() on it before exitting
> this function on error.
> 
> This is detected by Coccinelle semantic patch.
> 
> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>

Kishon, this looks correct to me, so I applied it to pci/host-dra7xx for
v4.10.  Let me know if you have any issue with it.

> ---
>  drivers/pci/host/pci-dra7xx.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/host/pci-dra7xx.c
> index 9595fad..79297e9 100644
> --- a/drivers/pci/host/pci-dra7xx.c
> +++ b/drivers/pci/host/pci-dra7xx.c
> @@ -177,6 +177,7 @@ static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp)
>  					       &intx_domain_ops, pp);
>  	if (!pp->irq_domain) {
>  		dev_err(dev, "Failed to get a INTx IRQ domain\n");
> +		of_node_put(pcie_intc_node);
>  		return -ENODEV;
>  	}
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain()
  2016-11-11 21:38 ` Bjorn Helgaas
@ 2016-11-12  7:09     ` Kishon Vijay Abraham I
  0 siblings, 0 replies; 7+ messages in thread
From: Kishon Vijay Abraham I @ 2016-11-12  7:09 UTC (permalink / raw)
  To: Bjorn Helgaas, Wei Yongjun
  Cc: Bjorn Helgaas, Wei Yongjun, linux-omap, linux-pci

Hi,

On Saturday 12 November 2016 03:08 AM, Bjorn Helgaas wrote:
> On Mon, Oct 17, 2016 at 02:54:37PM +0000, Wei Yongjun wrote:
>> From: Wei Yongjun <weiyongjun1@huawei.com>
>>
>> This node pointer is returned by of_get_next_child() with refcount
>> incremented in this function. of_node_put() on it before exitting
>> this function on error.
>>
>> This is detected by Coccinelle semantic patch.
>>
>> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
> 
> Kishon, this looks correct to me, so I applied it to pci/host-dra7xx for
> v4.10.  Let me know if you have any issue with it.
> 
>> ---
>>  drivers/pci/host/pci-dra7xx.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/host/pci-dra7xx.c
>> index 9595fad..79297e9 100644
>> --- a/drivers/pci/host/pci-dra7xx.c
>> +++ b/drivers/pci/host/pci-dra7xx.c
>> @@ -177,6 +177,7 @@ static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp)
>>  					       &intx_domain_ops, pp);
>>  	if (!pp->irq_domain) {
>>  		dev_err(dev, "Failed to get a INTx IRQ domain\n");
>> +		of_node_put(pcie_intc_node);

I think of_node_put should be used for both the error case and non-error case.

Thanks
Kishon

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain()
@ 2016-11-12  7:09     ` Kishon Vijay Abraham I
  0 siblings, 0 replies; 7+ messages in thread
From: Kishon Vijay Abraham I @ 2016-11-12  7:09 UTC (permalink / raw)
  To: Bjorn Helgaas, Wei Yongjun
  Cc: Bjorn Helgaas, Wei Yongjun, linux-omap, linux-pci

Hi,

On Saturday 12 November 2016 03:08 AM, Bjorn Helgaas wrote:
> On Mon, Oct 17, 2016 at 02:54:37PM +0000, Wei Yongjun wrote:
>> From: Wei Yongjun <weiyongjun1@huawei.com>
>>
>> This node pointer is returned by of_get_next_child() with refcount
>> incremented in this function. of_node_put() on it before exitting
>> this function on error.
>>
>> This is detected by Coccinelle semantic patch.
>>
>> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
> 
> Kishon, this looks correct to me, so I applied it to pci/host-dra7xx for
> v4.10.  Let me know if you have any issue with it.
> 
>> ---
>>  drivers/pci/host/pci-dra7xx.c | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/host/pci-dra7xx.c
>> index 9595fad..79297e9 100644
>> --- a/drivers/pci/host/pci-dra7xx.c
>> +++ b/drivers/pci/host/pci-dra7xx.c
>> @@ -177,6 +177,7 @@ static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp)
>>  					       &intx_domain_ops, pp);
>>  	if (!pp->irq_domain) {
>>  		dev_err(dev, "Failed to get a INTx IRQ domain\n");
>> +		of_node_put(pcie_intc_node);

I think of_node_put should be used for both the error case and non-error case.

Thanks
Kishon

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain()
  2016-11-12  7:09     ` Kishon Vijay Abraham I
@ 2016-11-14 21:19         ` Bjorn Helgaas
  -1 siblings, 0 replies; 7+ messages in thread
From: Bjorn Helgaas @ 2016-11-14 21:19 UTC (permalink / raw)
  To: Kishon Vijay Abraham I
  Cc: Wei Yongjun, Bjorn Helgaas, Wei Yongjun,
	linux-omap-u79uwXL29TY76Z2rM5mHXA,
	linux-pci-u79uwXL29TY76Z2rM5mHXA, Shawn Lin, Heiko Stuebner,
	michal.simek-gjFFaj9aHVfQT0dZR+AlfA,
	soren.brinkmann-gjFFaj9aHVfQT0dZR+AlfA,
	bharat.kumar.gogada-gjFFaj9aHVfQT0dZR+AlfA,
	robh-DgEjT+Ai2ygdnm+yROfE0A, Frank Rowand,
	devicetree-u79uwXL29TY76Z2rM5mHXA

[+cc Shawn, Heiko, Michal, Soren, Bharat, Rob H, Frank, devicetree@vger]

On Sat, Nov 12, 2016 at 12:39:01PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Saturday 12 November 2016 03:08 AM, Bjorn Helgaas wrote:
> > On Mon, Oct 17, 2016 at 02:54:37PM +0000, Wei Yongjun wrote:
> >> From: Wei Yongjun <weiyongjun1-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
> >>
> >> This node pointer is returned by of_get_next_child() with refcount
> >> incremented in this function. of_node_put() on it before exitting
> >> this function on error.
> >>
> >> This is detected by Coccinelle semantic patch.
> >>
> >> Signed-off-by: Wei Yongjun <weiyongjun1-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
> > 
> > Kishon, this looks correct to me, so I applied it to pci/host-dra7xx for
> > v4.10.  Let me know if you have any issue with it.
> > 
> >> ---
> >>  drivers/pci/host/pci-dra7xx.c | 1 +
> >>  1 file changed, 1 insertion(+)
> >>
> >> diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/host/pci-dra7xx.c
> >> index 9595fad..79297e9 100644
> >> --- a/drivers/pci/host/pci-dra7xx.c
> >> +++ b/drivers/pci/host/pci-dra7xx.c
> >> @@ -177,6 +177,7 @@ static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp)
> >>  					       &intx_domain_ops, pp);
> >>  	if (!pp->irq_domain) {
> >>  		dev_err(dev, "Failed to get a INTx IRQ domain\n");
> >> +		of_node_put(pcie_intc_node);
> 
> I think of_node_put should be used for both the error case and non-error case.

Hmm, OK.  I don't know what the rules are.  Certainly if we made these
drivers modular, I don't think we'd want to leak these references
every time we unload/reload the module.  Should we do the put
immediately here, or in the module remove path, or ...?

Adding other driver and DT folks for comment.

I dropped these patches for now (dra7xx, rockchip, xilinx-nwl,
xilinx).
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain()
@ 2016-11-14 21:19         ` Bjorn Helgaas
  0 siblings, 0 replies; 7+ messages in thread
From: Bjorn Helgaas @ 2016-11-14 21:19 UTC (permalink / raw)
  To: Kishon Vijay Abraham I
  Cc: Wei Yongjun, Bjorn Helgaas, Wei Yongjun, linux-omap, linux-pci,
	Shawn Lin, Heiko Stuebner, michal.simek, soren.brinkmann,
	bharat.kumar.gogada, robh, Frank Rowand, devicetree

[+cc Shawn, Heiko, Michal, Soren, Bharat, Rob H, Frank, devicetree@vger]

On Sat, Nov 12, 2016 at 12:39:01PM +0530, Kishon Vijay Abraham I wrote:
> Hi,
> 
> On Saturday 12 November 2016 03:08 AM, Bjorn Helgaas wrote:
> > On Mon, Oct 17, 2016 at 02:54:37PM +0000, Wei Yongjun wrote:
> >> From: Wei Yongjun <weiyongjun1@huawei.com>
> >>
> >> This node pointer is returned by of_get_next_child() with refcount
> >> incremented in this function. of_node_put() on it before exitting
> >> this function on error.
> >>
> >> This is detected by Coccinelle semantic patch.
> >>
> >> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
> > 
> > Kishon, this looks correct to me, so I applied it to pci/host-dra7xx for
> > v4.10.  Let me know if you have any issue with it.
> > 
> >> ---
> >>  drivers/pci/host/pci-dra7xx.c | 1 +
> >>  1 file changed, 1 insertion(+)
> >>
> >> diff --git a/drivers/pci/host/pci-dra7xx.c b/drivers/pci/host/pci-dra7xx.c
> >> index 9595fad..79297e9 100644
> >> --- a/drivers/pci/host/pci-dra7xx.c
> >> +++ b/drivers/pci/host/pci-dra7xx.c
> >> @@ -177,6 +177,7 @@ static int dra7xx_pcie_init_irq_domain(struct pcie_port *pp)
> >>  					       &intx_domain_ops, pp);
> >>  	if (!pp->irq_domain) {
> >>  		dev_err(dev, "Failed to get a INTx IRQ domain\n");
> >> +		of_node_put(pcie_intc_node);
> 
> I think of_node_put should be used for both the error case and non-error case.

Hmm, OK.  I don't know what the rules are.  Certainly if we made these
drivers modular, I don't think we'd want to leak these references
every time we unload/reload the module.  Should we do the put
immediately here, or in the module remove path, or ...?

Adding other driver and DT folks for comment.

I dropped these patches for now (dra7xx, rockchip, xilinx-nwl,
xilinx).

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain()
  2016-11-14 21:19         ` Bjorn Helgaas
  (?)
@ 2016-11-14 21:37         ` Heiko Stuebner
  -1 siblings, 0 replies; 7+ messages in thread
From: Heiko Stuebner @ 2016-11-14 21:37 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Kishon Vijay Abraham I, Wei Yongjun, Bjorn Helgaas, Wei Yongjun,
	linux-omap, linux-pci, Shawn Lin, michal.simek, soren.brinkmann,
	bharat.kumar.gogada, robh, Frank Rowand, devicetree

Am Montag, 14. November 2016, 15:19:28 CET schrieb Bjorn Helgaas:
> [+cc Shawn, Heiko, Michal, Soren, Bharat, Rob H, Frank, devicetree@vger]
> 
> On Sat, Nov 12, 2016 at 12:39:01PM +0530, Kishon Vijay Abraham I wrote:
> > Hi,
> > 
> > On Saturday 12 November 2016 03:08 AM, Bjorn Helgaas wrote:
> > > On Mon, Oct 17, 2016 at 02:54:37PM +0000, Wei Yongjun wrote:
> > >> From: Wei Yongjun <weiyongjun1@huawei.com>
> > >> 
> > >> This node pointer is returned by of_get_next_child() with refcount
> > >> incremented in this function. of_node_put() on it before exitting
> > >> this function on error.
> > >> 
> > >> This is detected by Coccinelle semantic patch.
> > >> 
> > >> Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
> > > 
> > > Kishon, this looks correct to me, so I applied it to pci/host-dra7xx for
> > > v4.10.  Let me know if you have any issue with it.
> > > 
> > >> ---
> > >> 
> > >>  drivers/pci/host/pci-dra7xx.c | 1 +
> > >>  1 file changed, 1 insertion(+)
> > >> 
> > >> diff --git a/drivers/pci/host/pci-dra7xx.c
> > >> b/drivers/pci/host/pci-dra7xx.c
> > >> index 9595fad..79297e9 100644
> > >> --- a/drivers/pci/host/pci-dra7xx.c
> > >> +++ b/drivers/pci/host/pci-dra7xx.c
> > >> @@ -177,6 +177,7 @@ static int dra7xx_pcie_init_irq_domain(struct
> > >> pcie_port *pp)> >> 
> > >>  					       &intx_domain_ops, pp);
> > >>  	
> > >>  	if (!pp->irq_domain) {
> > >>  	
> > >>  		dev_err(dev, "Failed to get a INTx IRQ domain\n");
> > >> 
> > >> +		of_node_put(pcie_intc_node);
> > 
> > I think of_node_put should be used for both the error case and non-error
> > case.
> Hmm, OK.  I don't know what the rules are.  Certainly if we made these
> drivers modular, I don't think we'd want to leak these references
> every time we unload/reload the module.  Should we do the put
> immediately here, or in the module remove path, or ...?
> 
> Adding other driver and DT folks for comment.

I think the function above (dra7xx_pcie_init_irq_domain) can do the 
of_node_put at its end in all cases as suggested by Kishon.

of_get_next_child() will increment the refcount
	irq_domain_add_linear()
		__irq_domain_add() also increments the refcount


irq_domain_remove() will decrement the refcount

So it should be safe to decrement the refcount in 
dra7xx_pcie_init_irq_domain() in all cases as the irq-domain internals will 
always keep it above 1 as long as the node is used.


Heiko

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-11-14 21:37 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-17 14:54 [PATCH -next] PCI: dra7xx: Add missing of_node_put() in dra7xx_pcie_init_irq_domain() Wei Yongjun
2016-11-11 21:38 ` Bjorn Helgaas
2016-11-12  7:09   ` Kishon Vijay Abraham I
2016-11-12  7:09     ` Kishon Vijay Abraham I
     [not found]     ` <1d95b915-ddc0-b48f-270b-fffb60ecfe5e-l0cyMroinI0@public.gmane.org>
2016-11-14 21:19       ` Bjorn Helgaas
2016-11-14 21:19         ` Bjorn Helgaas
2016-11-14 21:37         ` Heiko Stuebner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.