* [PATCH] omap: DT node Timer iteration fix
@ 2013-01-08 13:31 Pantelis Antoniou
2013-01-09 22:12 ` Jon Hunter
0 siblings, 1 reply; 3+ messages in thread
From: Pantelis Antoniou @ 2013-01-08 13:31 UTC (permalink / raw)
Cc: Tony Lindgren, Stephen Warren, Benoit Cousson, linux-omap,
linux-kernel, Matt Porter, Russ Dill, Koen Kooi, Joel A Fernandes,
Rob Clark, Jason Kridner, Matt Ranostay, Pantelis Antoniou
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 <panto@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
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] omap: DT node Timer iteration fix
2013-01-08 13:31 [PATCH] omap: DT node Timer iteration fix Pantelis Antoniou
@ 2013-01-09 22:12 ` Jon Hunter
2013-01-21 18:37 ` Tony Lindgren
0 siblings, 1 reply; 3+ messages in thread
From: Jon Hunter @ 2013-01-09 22:12 UTC (permalink / raw)
To: Pantelis Antoniou
Cc: Tony Lindgren, Stephen Warren, Benoit Cousson, linux-omap,
linux-kernel, Matt Porter, Russ Dill, Koen Kooi, Joel A Fernandes,
Rob Clark, Jason Kridner, Matt Ranostay
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 <panto@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-hunter@ti.com>
Cheers
Jon
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] omap: DT node Timer iteration fix
2013-01-09 22:12 ` Jon Hunter
@ 2013-01-21 18:37 ` Tony Lindgren
0 siblings, 0 replies; 3+ messages in thread
From: Tony Lindgren @ 2013-01-21 18:37 UTC (permalink / raw)
To: Jon Hunter
Cc: Pantelis Antoniou, Stephen Warren, Benoit Cousson, linux-omap,
linux-kernel, Matt Porter, Russ Dill, Koen Kooi, Joel A Fernandes,
Rob Clark, Jason Kridner, Matt Ranostay
* Jon Hunter <jon-hunter@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
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2013-01-21 18:37 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-08 13:31 [PATCH] omap: DT node Timer iteration fix Pantelis Antoniou
2013-01-09 22:12 ` Jon Hunter
2013-01-21 18:37 ` Tony Lindgren
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).