diff mbox series

mips: lantiq: Add missing of_node_put() in irq.c

Message ID 20220615153339.3970658-1-windhl@126.com (mailing list archive)
State Superseded
Headers show
Series mips: lantiq: Add missing of_node_put() in irq.c | expand

Commit Message

Liang He June 15, 2022, 3:33 p.m. UTC
In icu_of_init(), of_find_compatible_node() will return a node
pointer with refcount incremented. We should use of_node_put()
when it is not used anymore.

Signed-off-by: Liang He <windhl@126.com>
---
 arch/mips/lantiq/irq.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Thomas Bogendoerfer June 21, 2022, 3:21 p.m. UTC | #1
On Wed, Jun 15, 2022 at 11:33:39PM +0800, Liang He wrote:
> In icu_of_init(), of_find_compatible_node() will return a node
> pointer with refcount incremented. We should use of_node_put()
> when it is not used anymore.
> 
> Signed-off-by: Liang He <windhl@126.com>
> ---
>  arch/mips/lantiq/irq.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c
> index b732495f138a..62f1b20a2169 100644
> --- a/arch/mips/lantiq/irq.c
> +++ b/arch/mips/lantiq/irq.c
> @@ -396,6 +396,9 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent)
>  
>  		ret = of_property_read_u32_array(eiu_node, "lantiq,eiu-irqs",
>  						ltq_eiu_irq, exin_avail);
> +						

trailing whitespaces

> +		of_node_put(eiu_node);
> +						

trailing whitespaces

>  		if (ret)
>  			panic("failed to load external irq resources");
>  
> @@ -409,6 +412,9 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent)
>  			panic("Failed to remap eiu memory");
>  	}
>  
> +	/* if eiu_node&of_address_to_resource */
> +	of_node_put(eiu_node);
> +

if I'm not mistaken you are freeing the taken reference twice. Shouldn't
it work by only adding the last of_node_put() ?

Thomas.
Liang He June 21, 2022, 3:32 p.m. UTC | #2
At 2022-06-21 23:21:19, "Thomas Bogendoerfer" <tsbogend@alpha.franken.de> wrote:
>On Wed, Jun 15, 2022 at 11:33:39PM +0800, Liang He wrote:
>> In icu_of_init(), of_find_compatible_node() will return a node
>> pointer with refcount incremented. We should use of_node_put()
>> when it is not used anymore.
>> 
>> Signed-off-by: Liang He <windhl@126.com>
>> ---
>>  arch/mips/lantiq/irq.c | 6 ++++++
>>  1 file changed, 6 insertions(+)
>> 
>> diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c
>> index b732495f138a..62f1b20a2169 100644
>> --- a/arch/mips/lantiq/irq.c
>> +++ b/arch/mips/lantiq/irq.c
>> @@ -396,6 +396,9 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent)
>>  
>>  		ret = of_property_read_u32_array(eiu_node, "lantiq,eiu-irqs",
>>  						ltq_eiu_irq, exin_avail);
>> +						
>
>trailing whitespaces
>
>> +		of_node_put(eiu_node);
>> +						
>
>trailing whitespaces
>
>>  		if (ret)
>>  			panic("failed to load external irq resources");
>>  
>> @@ -409,6 +412,9 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent)
>>  			panic("Failed to remap eiu memory");
>>  	}
>>  
>> +	/* if eiu_node&of_address_to_resource */
>> +	of_node_put(eiu_node);
>> +
>
>if I'm not mistaken you are freeing the taken reference twice. Shouldn't
>it work by only adding the last of_node_put() ?
>
>Thomas.

Hi, Thomas.

Thanks very much for your effort to review and apply my patches.

You are right, this patch is wrong and only the last put is needed.

I will send a new patch: removing trailing whitspace and the first put.

Thans again.

Liang

>
>-- 
>Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
>good idea.                                                [ RFC1925, 2.3 ]
Krzysztof Kozlowski June 22, 2022, 9:02 a.m. UTC | #3
On 21/06/2022 17:32, Liang He wrote:
> 
> 
> At 2022-06-21 23:21:19, "Thomas Bogendoerfer" <tsbogend@alpha.franken.de> wrote:
>> On Wed, Jun 15, 2022 at 11:33:39PM +0800, Liang He wrote:
>>> In icu_of_init(), of_find_compatible_node() will return a node
>>> pointer with refcount incremented. We should use of_node_put()
>>> when it is not used anymore.
>>>
>>> Signed-off-by: Liang He <windhl@126.com>
>>> ---
>>>  arch/mips/lantiq/irq.c | 6 ++++++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c
>>> index b732495f138a..62f1b20a2169 100644
>>> --- a/arch/mips/lantiq/irq.c
>>> +++ b/arch/mips/lantiq/irq.c
>>> @@ -396,6 +396,9 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent)
>>>  
>>>  		ret = of_property_read_u32_array(eiu_node, "lantiq,eiu-irqs",
>>>  						ltq_eiu_irq, exin_avail);
>>> +						
>>
>> trailing whitespaces
>>
>>> +		of_node_put(eiu_node);
>>> +						
>>
>> trailing whitespaces
>>
>>>  		if (ret)
>>>  			panic("failed to load external irq resources");
>>>  
>>> @@ -409,6 +412,9 @@ int __init icu_of_init(struct device_node *node, struct device_node *parent)
>>>  			panic("Failed to remap eiu memory");
>>>  	}
>>>  
>>> +	/* if eiu_node&of_address_to_resource */
>>> +	of_node_put(eiu_node);
>>> +
>>
>> if I'm not mistaken you are freeing the taken reference twice. Shouldn't
>> it work by only adding the last of_node_put() ?
>>
>> Thomas.
> 
> Hi, Thomas.
> 
> Thanks very much for your effort to review and apply my patches.
> 
> You are right, this patch is wrong and only the last put is needed.
> 
> I will send a new patch: removing trailing whitspace and the first put.
> 
> Thans again.

Thomas,

Before applying the patch please check it carefully. Previous evidence
[1][2] suggests that not it was not even compiled.



[1] https://lore.kernel.org/all/202206221602.odN70SHs-lkp@intel.com/

[2]
https://lore.kernel.org/all/16f9a971.44e5.1817068ee3c.Coremail.windhl@126.com/


Best regards,
Krzysztof
diff mbox series

Patch

diff --git a/arch/mips/lantiq/irq.c b/arch/mips/lantiq/irq.c
index b732495f138a..62f1b20a2169 100644
--- a/arch/mips/lantiq/irq.c
+++ b/arch/mips/lantiq/irq.c
@@ -396,6 +396,9 @@  int __init icu_of_init(struct device_node *node, struct device_node *parent)
 
 		ret = of_property_read_u32_array(eiu_node, "lantiq,eiu-irqs",
 						ltq_eiu_irq, exin_avail);
+						
+		of_node_put(eiu_node);
+						
 		if (ret)
 			panic("failed to load external irq resources");
 
@@ -409,6 +412,9 @@  int __init icu_of_init(struct device_node *node, struct device_node *parent)
 			panic("Failed to remap eiu memory");
 	}
 
+	/* if eiu_node&of_address_to_resource */
+	of_node_put(eiu_node);
+
 	return 0;
 }