Messages in this thread Patch in this message | | | From | Yi Yang <> | Subject | [PATCH -next] xtensa/simdisk: fix error handling in proc_read_simdisk() | Date | Tue, 10 May 2022 16:05:33 +0800 |
| |
The frist simple_read_from_buffer() will change ppos. if ppos >= 1. The second simple_read_from_buffer() will does not work and return 0.
Fixes: a69755b18774 ("xtensa simdisk: switch to proc_create_data()") Signed-off-by: Yi Yang <yiyang13@huawei.com> --- arch/xtensa/platforms/iss/simdisk.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-)
diff --git a/arch/xtensa/platforms/iss/simdisk.c b/arch/xtensa/platforms/iss/simdisk.c index 0f0e0724397f..618c080c388d 100644 --- a/arch/xtensa/platforms/iss/simdisk.c +++ b/arch/xtensa/platforms/iss/simdisk.c @@ -210,13 +210,21 @@ static ssize_t proc_read_simdisk(struct file *file, char __user *buf, { struct simdisk *dev = pde_data(file_inode(file)); const char *s = dev->filename; + char *temp; + if (s) { + ssize_t len = strlen(s); + + temp = kmalloc(len + 2, GFP_KERNEL); + if (!temp) + return -ENOMEM; + + scnprintf(temp, len + 2, "%s\n", s); ssize_t n = simple_read_from_buffer(buf, size, ppos, - s, strlen(s)); - if (n < 0) - return n; - buf += n; - size -= n; + temp, strlen(temp)); + + kfree(temp); + return n; } return simple_read_from_buffer(buf, size, ppos, "\n", 1); } -- 2.17.1
| |