2021-03-31 06:29:17

by wangfangpeng

[permalink] [raw]
Subject: [PATCH] ubifs: fix read fail but return ok

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: <[email protected]> #v2.6.27
Signed-off-by: wangfangpeng <[email protected]>
---
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)
--
2.12.3


2021-04-07 22:13:01

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH] ubifs: fix read fail but return ok

On Wed, Mar 31, 2021 at 8:29 AM wangfangpeng <[email protected]> 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. :-)

--
Thanks,
//richard