Hi Grant.likely, I really preciate if you can spend some times to review this patch.
Thanks, Yuantian > -----Original Message----- > From: Tang Yuantian-B29983 > Sent: 2013年4月10日 11:37 > To: grant.lik...@secretlab.ca > Cc: rob.herr...@calxeda.com; devicetree-disc...@lists.ozlabs.org; linux- > ker...@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; Tang Yuantian- > B29983; Tang Yuantian-B29983 > Subject: [PATCH v2] of/base: release the node correctly in > of_parse_phandle_with_args() > > From: Tang Yuantian <yuantian.t...@freescale.com> > > Call of_node_put() only when the out_args is NULL on success, or the > node's reference count will not be correct because the caller will call > of_node_put() again. > > Signed-off-by: Tang Yuantian <yuantian.t...@freescale.com> > --- > v2: > - modified the title and description. the 1st patch title is: > of: remove the unnecessary of_node_put for > of_parse_phandle_with_args() > the 1st patch is not good enough. > > drivers/of/base.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/of/base.c b/drivers/of/base.c index 321d3ef..ee94f64 > 100644 > --- a/drivers/of/base.c > +++ b/drivers/of/base.c > @@ -1158,6 +1158,7 @@ static int __of_parse_phandle_with_args(const > struct device_node *np, > if (!phandle) > goto err; > > + /* Found it! return success */ > if (out_args) { > int i; > if (WARN_ON(count > MAX_PHANDLE_ARGS)) @@ - > 1166,11 +1167,10 @@ static int __of_parse_phandle_with_args(const struct > device_node *np, > out_args->args_count = count; > for (i = 0; i < count; i++) > out_args->args[i] = > be32_to_cpup(list++); > + } else if (node) { > + of_node_put(node); > } > > - /* Found it! return success */ > - if (node) > - of_node_put(node); > return 0; > } > > -- > 1.8.0 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev