Message ID | 20220605084035.27127-1-linmq006@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drivers: soc: atmel: Fix refcount leak in atmel_soc_device_init | expand |
On 05.06.2022 11:40, Miaoqian Lin wrote: > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > of_find_node_by_path() returns a node pointer with refcount incremented, > we should use of_node_put() on it when not need anymore. > Add missing of_node_put() to avoid refcount leak. > > Fixes: 960ddf70cc11 ("drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs") > Signed-off-by: Miaoqian Lin <linmq006@gmail.com> > --- > drivers/soc/atmel/soc.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/soc/atmel/soc.c b/drivers/soc/atmel/soc.c > index b2d365ae0282..46dfa24c52fb 100644 > --- a/drivers/soc/atmel/soc.c > +++ b/drivers/soc/atmel/soc.c > @@ -369,10 +369,13 @@ static int __init atmel_soc_device_init(void) > { > struct device_node *np = of_find_node_by_path("/"); > What about having it like this: const struct of_device_id *of_id; of_id = of_match_node(at91_soc_allowed_list, np); of_node_put(np); if (!of_id) return 0; And everything else the same? > - if (!of_match_node(at91_soc_allowed_list, np)) > + if (!of_match_node(at91_soc_allowed_list, np)) { > + of_node_put(np); > return 0; > + } > > at91_soc_init(socs); > + of_node_put(np); > > return 0; > } > -- > 2.25.1 >
On Mon, Jun 06, 2022 at 09:00:52AM +0000, Claudiu.Beznea@microchip.com wrote: > On 05.06.2022 11:40, Miaoqian Lin wrote: > > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe > > > > of_find_node_by_path() returns a node pointer with refcount incremented, > > we should use of_node_put() on it when not need anymore. > > Add missing of_node_put() to avoid refcount leak. > > > > Fixes: 960ddf70cc11 ("drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs") > > Signed-off-by: Miaoqian Lin <linmq006@gmail.com> > > --- > > drivers/soc/atmel/soc.c | 5 ++++- > > 1 file changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/soc/atmel/soc.c b/drivers/soc/atmel/soc.c > > index b2d365ae0282..46dfa24c52fb 100644 > > --- a/drivers/soc/atmel/soc.c > > +++ b/drivers/soc/atmel/soc.c > > @@ -369,10 +369,13 @@ static int __init atmel_soc_device_init(void) > > { > > struct device_node *np = of_find_node_by_path("/"); > > > > What about having it like this: > const struct of_device_id *of_id; > > of_id = of_match_node(at91_soc_allowed_list, np); > of_node_put(np); +1, I was about to make similar suggestion in couple of other patches making similar changes.
diff --git a/drivers/soc/atmel/soc.c b/drivers/soc/atmel/soc.c index b2d365ae0282..46dfa24c52fb 100644 --- a/drivers/soc/atmel/soc.c +++ b/drivers/soc/atmel/soc.c @@ -369,10 +369,13 @@ static int __init atmel_soc_device_init(void) { struct device_node *np = of_find_node_by_path("/"); - if (!of_match_node(at91_soc_allowed_list, np)) + if (!of_match_node(at91_soc_allowed_list, np)) { + of_node_put(np); return 0; + } at91_soc_init(socs); + of_node_put(np); return 0; }
of_find_node_by_path() returns a node pointer with refcount incremented, we should use of_node_put() on it when not need anymore. Add missing of_node_put() to avoid refcount leak. Fixes: 960ddf70cc11 ("drivers: soc: atmel: Avoid calling at91_soc_init on non AT91 SoCs") Signed-off-by: Miaoqian Lin <linmq006@gmail.com> --- drivers/soc/atmel/soc.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)