[PATCH 1/3] OF: base: fix infinite loop in of_find_node_by_name

Sebastian Hesselbarth sebastian.hesselbarth at gmail.com
Thu Jul 4 03:13:38 EDT 2013


On 07/04/13 08:58, Sascha Hauer wrote:
> On Thu, Jul 04, 2013 at 12:46:16AM +0200, Sebastian Hesselbarth wrote:
>> of_find_node_by_name suffers from infinite looping, because it
>> does not check for root node of the tree iterated over. This adds a
>> check for parent pointer of last tested iterator entry, which is
>> NULL for the root node.
>>
>
> How about the following which adds the check to the iterator instead of
> repeating it in the users.
>
> Sascha
>
> 8<---------------------------------------------------------------
>
>  From 3f361661e5446b0592f137a50efc4b275f426b41 Mon Sep 17 00:00:00 2001
> From: Sascha Hauer <s.hauer at pengutronix.de>
> Date: Thu, 4 Jul 2013 08:52:10 +0200
> Subject: [PATCH] OF: base: fix inifinite looping in node iterators
>
> of_find_node_by_name suffers from infinite looping, because it
> does not check for root node of the tree iterated over. This
> fixes this by checking for node->parent to determine whether
> the last node has been reached.
> Since of_tree_for_each_node does not iterate over the whole tree,
> but only over the remaining nodes, rename it to
> of_tree_for_each_node_from.
>
> Reported-by: NISHIMOTO Hiroki <hiroki.nishimoto.if at gmail.com>
> Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> ---

Sascha,

I thought about that also. I like the approach better than fixing
every user of the iterator and will re-test them all.

Thanks for the patch.

Sebastian




More information about the barebox mailing list