Message ID | 20210423000919.1249474-1-joel@jms.id.au (mailing list archive) |
---|---|
State | Accepted |
Commit | d42805807be7cb74a13c1d3b0035148f3637e035 |
Headers | show |
Series | soc: aspeed: fix a ternary sign expansion bug | expand |
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
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,