Thread (5 messages) flat view 5 messages, 3 authors, 2021-02-05

Re: [PATCH] arch:powerpc simple_write_to_buffer return check

From: Mayank Suman <hidden>
Date: 2021-02-05 06:15:15
Also in: lkml

On 05/02/21 4:05 am, Oliver O'Halloran wrote:
On Fri, Feb 5, 2021 at 5:17 AM Mayank Suman [off-list ref] wrote:
quoted
Signed-off-by: Mayank Suman <redacted>
commit messages aren't optional
Sorry. I will include the commit message in PATCH v2.
quoted
---
 arch/powerpc/kernel/eeh.c                    | 8 ++++----
 arch/powerpc/platforms/powernv/eeh-powernv.c | 4 ++--
 2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index 813713c9120c..2dbe1558a71f 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -1628,8 +1628,8 @@ static ssize_t eeh_force_recover_write(struct file *filp,
        char buf[20];
        int ret;

-       ret = simple_write_to_buffer(buf, sizeof(buf), ppos, user_buf, count);
-       if (!ret)
+       ret = simple_write_to_buffer(buf, sizeof(buf)-1, ppos, user_buf, count);
We should probably be zeroing the buffer. Reading to sizeof(buf) - 1
is done in a few places to guarantee that the string is nul
terminated, but without the preceeding memset() that isn't actually
guaranteed.
Yes, the buffer should be zeroed out first. I have included memset() in Patch v2.
quoted
+       if (ret <= 0)
                return -EFAULT;
EFAULT is supposed to be returned when the user supplies a buffer to
write(2) which is outside their address space. I figured letting the
sscanf() in the next step fail if the user passes writes a zero-length
buffer and returning EINVAL made more sense. That said, the exact
semantics around zero length writes are pretty handwavy so I guess
this isn't wrong, but I don't think it's better either.
simple_write_to_buffer may return negative value on fail.
So, -EFAULT should be return in case of negative return value. 
The conditional (!ret) was not sufficient to catch negative return value.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help