Re: [PATCH] omap: DT node Timer iteration fix
* Jon Hunter jon-hun...@ti.com [130109 14:15]: Hi Pantelis, On 01/08/2013 07:31 AM, Pantelis Antoniou wrote: The iterator correctly handles of_node_put() calls. Remove it before continue'ing the loop. Without this patch you get: Thanks for the fix! May be worth mentioning that this will only be seen with CONFIG_OF_DYNAMIC (and explains why I did not catch this one!). Thanks I'll update the description and apply into omap-for-v3.8-rc4/fixes. Regards, Tony -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] omap: DT node Timer iteration fix
Hi Pantelis, On 01/08/2013 07:31 AM, Pantelis Antoniou wrote: The iterator correctly handles of_node_put() calls. Remove it before continue'ing the loop. Without this patch you get: Thanks for the fix! May be worth mentioning that this will only be seen with CONFIG_OF_DYNAMIC (and explains why I did not catch this one!). ERROR: Bad of_node_put() on /ocp/timer@44e31000! [c001329c] (unwind_backtrace+0x0/0xe0) from [c03dd8f0] (of_node_release+0x2c/0xa0)! [c03dd8f0] (of_node_release+0x2c/0xa0) from [c03ddea0] (of_find_matching_node_and_match+0x78/0x90)! [c03ddea0] (of_find_matching_node_and_match+0x78/0x90) from [c06d349c] (omap_get_timer_dt+0x78/0x90)! [c06d349c] (omap_get_timer_dt+0x78/0x90) from [c06d3664] (omap_dm_timer_init_one.clone.2+0x34/0x2bc)! [c06d3664] (omap_dm_timer_init_one.clone.2+0x34/0x2bc) from [c06d3a2c] (omap2_gptimer_clocksource_init.clone.4+0x24/0xa8)! [c06d3a2c] (omap2_gptimer_clocksource_init.clone.4+0x24/0xa8) from [c06cca58] (time_init+0x20/0x30)! [c06cca58] (time_init+0x20/0x30) from [c06c9690] (start_kernel+0x1a8/0x2fc)! Signed-off-by: Pantelis Antoniou pa...@antoniou-consulting.com --- arch/arm/mach-omap2/timer.c | 8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 691aa67..b8ad6e6 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -165,15 +165,11 @@ static struct device_node * __init omap_get_timer_dt(struct of_device_id *match, struct device_node *np; for_each_matching_node(np, match) { - if (!of_device_is_available(np)) { - of_node_put(np); + if (!of_device_is_available(np)) continue; - } - if (property !of_get_property(np, property, NULL)) { - of_node_put(np); + if (property !of_get_property(np, property, NULL)) continue; - } of_add_property(np, device_disabled); return np; Otherwise ... Acked-by: Jon Hunter jon-hun...@ti.com Cheers Jon -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] omap: DT node Timer iteration fix
The iterator correctly handles of_node_put() calls. Remove it before continue'ing the loop. Without this patch you get: ERROR: Bad of_node_put() on /ocp/timer@44e31000! [c001329c] (unwind_backtrace+0x0/0xe0) from [c03dd8f0] (of_node_release+0x2c/0xa0)! [c03dd8f0] (of_node_release+0x2c/0xa0) from [c03ddea0] (of_find_matching_node_and_match+0x78/0x90)! [c03ddea0] (of_find_matching_node_and_match+0x78/0x90) from [c06d349c] (omap_get_timer_dt+0x78/0x90)! [c06d349c] (omap_get_timer_dt+0x78/0x90) from [c06d3664] (omap_dm_timer_init_one.clone.2+0x34/0x2bc)! [c06d3664] (omap_dm_timer_init_one.clone.2+0x34/0x2bc) from [c06d3a2c] (omap2_gptimer_clocksource_init.clone.4+0x24/0xa8)! [c06d3a2c] (omap2_gptimer_clocksource_init.clone.4+0x24/0xa8) from [c06cca58] (time_init+0x20/0x30)! [c06cca58] (time_init+0x20/0x30) from [c06c9690] (start_kernel+0x1a8/0x2fc)! Signed-off-by: Pantelis Antoniou pa...@antoniou-consulting.com --- arch/arm/mach-omap2/timer.c | 8 ++-- 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index 691aa67..b8ad6e6 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -165,15 +165,11 @@ static struct device_node * __init omap_get_timer_dt(struct of_device_id *match, struct device_node *np; for_each_matching_node(np, match) { - if (!of_device_is_available(np)) { - of_node_put(np); + if (!of_device_is_available(np)) continue; - } - if (property !of_get_property(np, property, NULL)) { - of_node_put(np); + if (property !of_get_property(np, property, NULL)) continue; - } of_add_property(np, device_disabled); return np; -- 1.7.12 -- To unsubscribe from this list: send the line unsubscribe linux-omap in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html