2018-11-21 14:25:47

by Frank Lee

[permalink] [raw]
Subject: [PATCH] soc/tegra: add of_node_put()

of_find_node_by_path() acquires a reference to the node
returned by it and that reference needs to be dropped by its caller.
bl_idle_init() doesn't do that, so fix it.

Signed-off-by: Yangtao Li <[email protected]>
---
drivers/soc/tegra/common.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/soc/tegra/common.c b/drivers/soc/tegra/common.c
index cd8f41351add..2e30604c9658 100644
--- a/drivers/soc/tegra/common.c
+++ b/drivers/soc/tegra/common.c
@@ -23,10 +23,13 @@ static const struct of_device_id tegra_machine_match[] = {
bool soc_is_tegra(void)
{
struct device_node *root;
+ bool rc;

root = of_find_node_by_path("/");
if (!root)
return false;

- return of_match_node(tegra_machine_match, root) != NULL;
+ rc = of_match_node(tegra_machine_match, root) != NULL;
+ of_node_put(root);
+ return rc;
}
--
2.17.0



2018-11-21 13:36:43

by Jon Hunter

[permalink] [raw]
Subject: Re: [PATCH] soc/tegra: add of_node_put()


On 21/11/2018 12:49, Yangtao Li wrote:
> of_find_node_by_path() acquires a reference to the node
> returned by it and that reference needs to be dropped by its caller.
> bl_idle_init() doesn't do that, so fix it.
>
> Signed-off-by: Yangtao Li <[email protected]>
> ---
> drivers/soc/tegra/common.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/soc/tegra/common.c b/drivers/soc/tegra/common.c
> index cd8f41351add..2e30604c9658 100644
> --- a/drivers/soc/tegra/common.c
> +++ b/drivers/soc/tegra/common.c
> @@ -23,10 +23,13 @@ static const struct of_device_id tegra_machine_match[] = {
> bool soc_is_tegra(void)
> {
> struct device_node *root;
> + bool rc;
>
> root = of_find_node_by_path("/");
> if (!root)
> return false;
>
> - return of_match_node(tegra_machine_match, root) != NULL;
> + rc = of_match_node(tegra_machine_match, root) != NULL;
> + of_node_put(root);
> + return rc;
> }

Thanks for the fix, however, I think it would be even simpler just to
call of_machine_is_compatible() here instead.

Cheers
Jon

--
nvpublic

2018-11-21 17:38:42

by Jon Hunter

[permalink] [raw]
Subject: Re: [PATCH] soc/tegra: add of_node_put()


On 21/11/2018 13:31, Jon Hunter wrote:
>
> On 21/11/2018 12:49, Yangtao Li wrote:
>> of_find_node_by_path() acquires a reference to the node
>> returned by it and that reference needs to be dropped by its caller.
>> bl_idle_init() doesn't do that, so fix it.

The bl_idle_init() looks like a typo here.

>>
>> Signed-off-by: Yangtao Li <[email protected]>
>> ---
>> drivers/soc/tegra/common.c | 5 ++++-
>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/soc/tegra/common.c b/drivers/soc/tegra/common.c
>> index cd8f41351add..2e30604c9658 100644
>> --- a/drivers/soc/tegra/common.c
>> +++ b/drivers/soc/tegra/common.c
>> @@ -23,10 +23,13 @@ static const struct of_device_id tegra_machine_match[] = {
>> bool soc_is_tegra(void)
>> {
>> struct device_node *root;
>> + bool rc;
>>
>> root = of_find_node_by_path("/");
>> if (!root)
>> return false;
>>
>> - return of_match_node(tegra_machine_match, root) != NULL;
>> + rc = of_match_node(tegra_machine_match, root) != NULL;
>> + of_node_put(root);
>> + return rc;
>> }
>
> Thanks for the fix, however, I think it would be even simpler just to
> call of_machine_is_compatible() here instead.

Right so I was wrong above about using of_machine_is_compatible, so with
the typo above fixed ...

Acked-by: Jon Hunter <[email protected]>

Cheers
Jon

--
nvpublic

2018-11-21 17:49:01

by Frank Lee

[permalink] [raw]
Subject: Re: [PATCH] soc/tegra: add of_node_put()

On Wed, Nov 21, 2018 at 10:41 PM Jon Hunter <[email protected]> wrote:
>
>
> On 21/11/2018 13:31, Jon Hunter wrote:
> >
> > On 21/11/2018 12:49, Yangtao Li wrote:
> >> of_find_node_by_path() acquires a reference to the node
> >> returned by it and that reference needs to be dropped by its caller.
> >> bl_idle_init() doesn't do that, so fix it.
>
> The bl_idle_init() looks like a typo here.
Hi Jon:

Thanks. :-)

Yous,
Yangtao
>
> >>
> >> Signed-off-by: Yangtao Li <[email protected]>
> >> ---
> >> drivers/soc/tegra/common.c | 5 ++++-
> >> 1 file changed, 4 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/soc/tegra/common.c b/drivers/soc/tegra/common.c
> >> index cd8f41351add..2e30604c9658 100644
> >> --- a/drivers/soc/tegra/common.c
> >> +++ b/drivers/soc/tegra/common.c
> >> @@ -23,10 +23,13 @@ static const struct of_device_id tegra_machine_match[] = {
> >> bool soc_is_tegra(void)
> >> {
> >> struct device_node *root;
> >> + bool rc;
> >>
> >> root = of_find_node_by_path("/");
> >> if (!root)
> >> return false;
> >>
> >> - return of_match_node(tegra_machine_match, root) != NULL;
> >> + rc = of_match_node(tegra_machine_match, root) != NULL;
> >> + of_node_put(root);
> >> + return rc;
> >> }
> >
> > Thanks for the fix, however, I think it would be even simpler just to
> > call of_machine_is_compatible() here instead.
>
> Right so I was wrong above about using of_machine_is_compatible, so with
> the typo above fixed ...
>
> Acked-by: Jon Hunter <[email protected]>
>
> Cheers
> Jon
>
> --
> nvpublic