linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] clk: Fix cached parent ptrs allocation
@ 2012-07-04 13:15 Prashant Gaikwad
  2012-07-05  1:10 ` Prashant Gaikwad
  2012-07-05 16:07 ` Stephen Warren
  0 siblings, 2 replies; 5+ messages in thread
From: Prashant Gaikwad @ 2012-07-04 13:15 UTC (permalink / raw)
  To: mturquette; +Cc: swarren, linux-arm-kernel, linux-kernel, Prashant Gaikwad

Compiler optimizes code someway that even if clk->parents
is not NULL it tries to allocate parents array. Change the
condition so that compiler does not optimize it in wrong
way.

Also, initialize i to num_parents to make sure parent
is searched using parent name if parents is NULL.

Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
---
Mike,

There could be some other way to fix problem. I have not
debugged it in detail but I think this simple change should do.

 drivers/clk/clk.c |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 026d901..b28f2ae 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1066,18 +1066,18 @@ static int __clk_set_parent(struct clk *clk, struct clk *parent)
 	struct clk *old_parent;
 	unsigned long flags;
 	int ret = -EINVAL;
-	u8 i;
+	u8 i = clk->num_parents;
 
 	old_parent = clk->parent;
 
 	/* find index of new parent clock using cached parent ptrs */
-	if (clk->parents)
+	if (!clk->parents)
+		clk->parents = kzalloc((sizeof(struct clk*) * clk->num_parents),
+								GFP_KERNEL);
+	else
 		for (i = 0; i < clk->num_parents; i++)
 			if (clk->parents[i] == parent)
 				break;
-	else
-		clk->parents = kzalloc((sizeof(struct clk*) * clk->num_parents),
-								GFP_KERNEL);
 
 	/*
 	 * find index of new parent clock using string name comparison
-- 
1.7.4.1


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

* Re: [PATCH] clk: Fix cached parent ptrs allocation
  2012-07-04 13:15 [PATCH] clk: Fix cached parent ptrs allocation Prashant Gaikwad
@ 2012-07-05  1:10 ` Prashant Gaikwad
  2012-07-05 16:07 ` Stephen Warren
  1 sibling, 0 replies; 5+ messages in thread
From: Prashant Gaikwad @ 2012-07-05  1:10 UTC (permalink / raw)
  To: Prashant Gaikwad; +Cc: mturquette, swarren, linux-arm-kernel, linux-kernel

On Wednesday 04 July 2012 06:45 PM, Prashant Gaikwad wrote:
> Compiler optimizes code someway that even if clk->parents
> is not NULL it tries to allocate parents array. Change the
> condition so that compiler does not optimize it in wrong
> way.
>
> Also, initialize i to num_parents to make sure parent
> is searched using parent name if parents is NULL.
>
> Signed-off-by: Prashant Gaikwad<pgaikwad@nvidia.com>
> ---
> Mike,
>
> There could be some other way to fix problem. I have not
> debugged it in detail but I think this simple change should do.
Mike,

Please ignore this patch as Rajendra has already sent patch to fix.

http://git.linaro.org/gitweb?p=people/mturquette/linux.git;a=commitdiff;h=863b13271f1608ab3af6f7a371047d9a66693e38

>   drivers/clk/clk.c |   10 +++++-----
>   1 files changed, 5 insertions(+), 5 deletions(-)
>


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

* Re: [PATCH] clk: Fix cached parent ptrs allocation
  2012-07-04 13:15 [PATCH] clk: Fix cached parent ptrs allocation Prashant Gaikwad
  2012-07-05  1:10 ` Prashant Gaikwad
@ 2012-07-05 16:07 ` Stephen Warren
  2012-07-05 17:21   ` Prashant Gaikwad
  1 sibling, 1 reply; 5+ messages in thread
From: Stephen Warren @ 2012-07-05 16:07 UTC (permalink / raw)
  To: Prashant Gaikwad; +Cc: mturquette, linux-arm-kernel, linux-kernel

On 07/04/2012 07:15 AM, Prashant Gaikwad wrote:
> Compiler optimizes code someway that even if clk->parents
> is not NULL it tries to allocate parents array. Change the
> condition so that compiler does not optimize it in wrong
> way.

If simply inverting the if test and swapping the if/else blocks solves
some problem, that sounds like a compiler bug that we need to track down
and file/fix.

> Also, initialize i to num_parents to make sure parent
> is searched using parent name if parents is NULL.

Are you sure the change to initialize i wasn't all that was required to
solve the problem though? Mike has applied a patch for this that'll be
applied to 3.5-rcX and hence trickle into 3.6.

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

* Re: [PATCH] clk: Fix cached parent ptrs allocation
  2012-07-05 16:07 ` Stephen Warren
@ 2012-07-05 17:21   ` Prashant Gaikwad
  2012-07-05 18:44     ` Stephen Warren
  0 siblings, 1 reply; 5+ messages in thread
From: Prashant Gaikwad @ 2012-07-05 17:21 UTC (permalink / raw)
  To: Stephen Warren; +Cc: mturquette, linux-arm-kernel, linux-kernel

On Thursday 05 July 2012 09:37 PM, Stephen Warren wrote:
> On 07/04/2012 07:15 AM, Prashant Gaikwad wrote:
>> Compiler optimizes code someway that even if clk->parents
>> is not NULL it tries to allocate parents array. Change the
>> condition so that compiler does not optimize it in wrong
>> way.
> If simply inverting the if test and swapping the if/else blocks solves
> some problem, that sounds like a compiler bug that we need to track down
> and file/fix.
>
>> Also, initialize i to num_parents to make sure parent
>> is searched using parent name if parents is NULL.
> Are you sure the change to initialize i wasn't all that was required to
> solve the problem though? Mike has applied a patch for this that'll be
> applied to 3.5-rcX and hence trickle into 3.6.
Just initializing i does not fix problem. The patch Mike has applied 
does two things
1. remove warning for uninitialized i
2. invert the if test

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

* Re: [PATCH] clk: Fix cached parent ptrs allocation
  2012-07-05 17:21   ` Prashant Gaikwad
@ 2012-07-05 18:44     ` Stephen Warren
  0 siblings, 0 replies; 5+ messages in thread
From: Stephen Warren @ 2012-07-05 18:44 UTC (permalink / raw)
  To: Prashant Gaikwad; +Cc: mturquette, linux-arm-kernel, linux-kernel

On 07/05/2012 11:21 AM, Prashant Gaikwad wrote:
> On Thursday 05 July 2012 09:37 PM, Stephen Warren wrote:
>> On 07/04/2012 07:15 AM, Prashant Gaikwad wrote:
>>> Compiler optimizes code someway that even if clk->parents
>>> is not NULL it tries to allocate parents array. Change the
>>> condition so that compiler does not optimize it in wrong
>>> way.
>> If simply inverting the if test and swapping the if/else blocks solves
>> some problem, that sounds like a compiler bug that we need to track down
>> and file/fix.
>>
>>> Also, initialize i to num_parents to make sure parent
>>> is searched using parent name if parents is NULL.
>> Are you sure the change to initialize i wasn't all that was required to
>> solve the problem though? Mike has applied a patch for this that'll be
>> applied to 3.5-rcX and hence trickle into 3.6.
>
> Just initializing i does not fix problem. The patch Mike has applied
> does two things
> 1. remove warning for uninitialized i
> 2. invert the if test

Yes, but Mike's patch is very different to yours. Your patch description
says that you need to invert the if test to work around the compiler
optimizer so that it doesn't "optimize it in wrong way", whereas the
patch Mike applied was for a legitimate bug in the code; those are two
entirely different things.

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

end of thread, other threads:[~2012-07-05 18:44 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-04 13:15 [PATCH] clk: Fix cached parent ptrs allocation Prashant Gaikwad
2012-07-05  1:10 ` Prashant Gaikwad
2012-07-05 16:07 ` Stephen Warren
2012-07-05 17:21   ` Prashant Gaikwad
2012-07-05 18:44     ` Stephen Warren

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).