Re: [PATCH] omap: DT node Timer iteration fix

2013-01-21 Thread Tony Lindgren
* 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

2013-01-09 Thread Jon Hunter
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

2013-01-08 Thread 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 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