Messages in this thread Patch in this message | | | From | ZhaoLong Wang <> | Subject | [RFC] mtd: Fix error code loss in mtdchar_read() function. | Date | Sat, 23 Sep 2023 08:58:56 +0800 |
| |
In the first while loop, if the mtd_read() function returns -EBADMSG and 'retlen' returns 0, the loop break and the function returns value 'total_retlen' is 0, not the error code.
This problem causes the user-space program to encounter EOF when it has not finished reading the mtd partion, and this also violates the read system call standard in POSIX.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217939 Signed-off-by: ZhaoLong Wang <wangzhaolong1@huawei.com> --- drivers/mtd/mtdchar.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c index 8dc4f5c493fc..ba60dc6bef98 100644 --- a/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c @@ -211,7 +211,7 @@ static ssize_t mtdchar_read(struct file *file, char __user *buf, size_t count, } kfree(kbuf); - return total_retlen; + return total_retlen ? total_retlen : ret; } /* mtdchar_read */ static ssize_t mtdchar_write(struct file *file, const char __user *buf, size_t count, -- 2.31.1
| |