do_readpage() may return err, but ubifs_readpage() always return ok. The vfs will ignore the err happen in ubifs.
Fixes: 1e51764a3c2ac05a2 ("UBIFS: add new flash file system") Cc: stable@vger.kernel.org #v2.6.27 Signed-off-by: wangfangpeng wangfangpeng1@huawei.com --- fs/ubifs/file.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 0e4b4be3aa26..001feec1d415 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -892,11 +892,13 @@ static int ubifs_bulk_read(struct page *page)
static int ubifs_readpage(struct file *file, struct page *page) { + int ret; + if (ubifs_bulk_read(page)) return 0; - do_readpage(page); + ret = do_readpage(page); unlock_page(page); - return 0; + return ret; }
static int do_writepage(struct page *page, int len)
On Wed, Mar 31, 2021 at 8:29 AM wangfangpeng wangfangpeng1@huawei.com wrote:
do_readpage() may return err, but ubifs_readpage() always return ok. The vfs will ignore the err happen in ubifs.
Are you sure about that? In case of an error UBIFS sets the error flag of the page and does not mark it as uptodate, so vfs will emit -EIO. At least this is the theory. :-)
linux-stable-mirror@lists.linaro.org