Linux SOC development
 help / color / mirror / Atom feed
* [PATCH] soc: aspeed: fix a ternary sign expansion bug
@ 2021-04-23  0:09 Joel Stanley
  2021-04-23  9:30 ` patchwork-bot+linux-soc
  0 siblings, 1 reply; 2+ messages in thread
From: Joel Stanley @ 2021-04-23  0:09 UTC (permalink / raw)
  To: soc; +Cc: Dan Carpenter, Patrick Venture

From: Dan Carpenter <dan.carpenter@oracle.com>

The intent here was to return negative error codes but it actually
returns positive values.  The problem is that type promotion with
ternary operations is quite complicated.

"ret" is an int.  "copied" is a u32.  And the snoop_file_read() function
returns long.  What happens is that "ret" is cast to u32 and becomes
positive then it's cast to long and it's still positive.

Fix this by removing the ternary so that "ret" is type promoted directly
to long.

Fixes: 3772e5da4454 ("drivers/misc: Aspeed LPC snoop output using misc chardev")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Patrick Venture <venture@google.com>
Link: https://lore.kernel.org/r/YIE90PSXsMTa2Y8n@mwanda
Signed-off-by: Joel Stanley <joel@jms.id.au>
---
Soc maintainers, can you please apply this fix.

 drivers/soc/aspeed/aspeed-lpc-snoop.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/soc/aspeed/aspeed-lpc-snoop.c b/drivers/soc/aspeed/aspeed-lpc-snoop.c
index 210455efb321..eceeaf8dfbeb 100644
--- a/drivers/soc/aspeed/aspeed-lpc-snoop.c
+++ b/drivers/soc/aspeed/aspeed-lpc-snoop.c
@@ -94,8 +94,10 @@ static ssize_t snoop_file_read(struct file *file, char __user *buffer,
 			return -EINTR;
 	}
 	ret = kfifo_to_user(&chan->fifo, buffer, count, &copied);
+	if (ret)
+		return ret;
 
-	return ret ? ret : copied;
+	return copied;
 }
 
 static __poll_t snoop_file_poll(struct file *file,
-- 
2.30.2


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

* Re: [PATCH] soc: aspeed: fix a ternary sign expansion bug
  2021-04-23  0:09 [PATCH] soc: aspeed: fix a ternary sign expansion bug Joel Stanley
@ 2021-04-23  9:30 ` patchwork-bot+linux-soc
  0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+linux-soc @ 2021-04-23  9:30 UTC (permalink / raw)
  To: Joel Stanley; +Cc: soc

Hello:

This patch was applied to soc/soc.git (refs/heads/for-next):

On Fri, 23 Apr 2021 09:39:19 +0930 you wrote:
> From: Dan Carpenter <dan.carpenter@oracle.com>
> 
> The intent here was to return negative error codes but it actually
> returns positive values.  The problem is that type promotion with
> ternary operations is quite complicated.
> 
> "ret" is an int.  "copied" is a u32.  And the snoop_file_read() function
> returns long.  What happens is that "ret" is cast to u32 and becomes
> positive then it's cast to long and it's still positive.
> 
> [...]

Here is the summary with links:
  - soc: aspeed: fix a ternary sign expansion bug
    https://git.kernel.org/soc/soc/c/d42805807be7

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2021-04-23  9:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-23  0:09 [PATCH] soc: aspeed: fix a ternary sign expansion bug Joel Stanley
2021-04-23  9:30 ` patchwork-bot+linux-soc

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox