linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] of/base: release the node correctly in of_parse_phandle_with_args()
@ 2013-04-10  3:36 Yuantian.Tang
  2013-04-16  6:54 ` Tang Yuantian-B29983
  2013-04-16 11:37 ` Timur Tabi
  0 siblings, 2 replies; 10+ messages in thread
From: Yuantian.Tang @ 2013-04-10  3:36 UTC (permalink / raw)
  To: grant.likely
  Cc: rob.herring, devicetree-discuss, linux-kernel, linuxppc-dev,
	Tang Yuantian, Tang Yuantian

From: Tang Yuantian <yuantian.tang@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.Tang@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



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

end of thread, other threads:[~2013-04-17 22:00 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-10  3:36 [PATCH v2] of/base: release the node correctly in of_parse_phandle_with_args() Yuantian.Tang
2013-04-16  6:54 ` Tang Yuantian-B29983
2013-04-17 14:57   ` Grant Likely
2013-04-17 21:52     ` Timur Tabi
2013-04-17 22:00       ` Grant Likely
2013-04-16 11:37 ` Timur Tabi
2013-04-17  2:44   ` Tang Yuantian-B29983
2013-04-17  3:30     ` Timur Tabi
2013-04-17  4:49       ` Tang Yuantian-B29983
2013-04-17 11:27         ` Timur Tabi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).