[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230923005856.2538223-1-wangzhaolong1@huawei.com>
Date: Sat, 23 Sep 2023 08:58:56 +0800
From: ZhaoLong Wang <wangzhaolong1@...wei.com>
To: <miquel.raynal@...tlin.com>, <richard@....at>, <vigneshr@...com>
CC: <linux-mtd@...ts.infradead.org>, <linux-kernel@...r.kernel.org>,
<chengzhihao1@...wei.com>, <wangzhaolong1@...wei.com>,
<yi.zhang@...wei.com>, <yangerkun@...wei.com>
Subject: [RFC] mtd: Fix error code loss in mtdchar_read() function.
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@...wei.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
Powered by blists - more mailing lists