[1/1] memory: tegra: fix fdc test bug

Message ID 20170407172820.21292-1-ben.dooks@codethink.co.uk
State Rejected
Headers show

Commit Message

Ben Dooks April 7, 2017, 5:28 p.m.
The fdc variable is a bool, taking the address of this will generally
produce true, thus skewing any users of the tegra_mc_set_latency_allowance
code.

Note, this does not seem to be producing a compiler warning. This was only
spotted as it meant a caller was seeing 3 times higher than expected
register results.

Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
---
 drivers/memory/tegra/mc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Ben Dooks April 7, 2017, 9:54 p.m. | #1
On 2017-04-07 18:43, Thierry Reding wrote:
> On Fri, Apr 07, 2017 at 06:28:20PM +0100, Ben Dooks wrote:
>> The fdc variable is a bool, taking the address of this will generally
>> produce true, thus skewing any users of the 
>> tegra_mc_set_latency_allowance
>> code.
>> 
>> Note, this does not seem to be producing a compiler warning. This was 
>> only
>> spotted as it meant a caller was seeing 3 times higher than expected
>> register results.
>> 
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
>> ---
>>  drivers/memory/tegra/mc.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> What tree is this based on? I don't see this code anywhere in mainline.

Apologies, turns out this a vendor added function.

Patch

diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c
index fb44d1741862..e20470736319 100644
--- a/drivers/memory/tegra/mc.c
+++ b/drivers/memory/tegra/mc.c
@@ -121,7 +121,7 @@  int tegra_mc_set_latency_allowance(int client_id, unsigned int bandwidth)
 
 	WARN_ON(client->id != client_id);
 
-	if (&client->fdc)
+	if (client->fdc)
 		atom_bytes = plat_mc->soc->atom_size_fdc;
 	else
 		atom_bytes = plat_mc->soc->atom_size;