Norton.Zhu
2015-Sep-07 02:11 UTC
[Ocfs2-devel] [PATCH] ocfs2_direct_IO_write misses ocfs2_is_overwrite error code
If ocfs2_is_overwrite failed, ocfs2_direct_IO_write mays till return success to the caller. Signed-off-by: Norton.Zhu <norton.zhu at huawei.com> --- aops.c | 1 + 1 file changed, 1 insertion(+) diff --git a/aops.c b/aops.c index 0f5fd9d..4107279 100644 --- a/aops.c +++ b/aops.c @@ -847,6 +847,7 @@ static ssize_t ocfs2_direct_IO_write(struct kiocb *iocb, is_overwrite = ocfs2_is_overwrite(osb, inode, offset); if (is_overwrite < 0) { mlog_errno(is_overwrite); + ret = is_overwrite; ocfs2_inode_unlock(inode, 1); goto clean_orphan; } -- 1.8.4.3
Andrew Morton
2015-Sep-11 21:20 UTC
[Ocfs2-devel] [PATCH] ocfs2_direct_IO_write misses ocfs2_is_overwrite error code
On Mon, 7 Sep 2015 10:11:56 +0800 "Norton.Zhu" <norton.zhu at huawei.com> wrote:> If ocfs2_is_overwrite failed, ocfs2_direct_IO_write mays till return success to the caller. > > ... > > --- a/aops.c > +++ b/aops.c > @@ -847,6 +847,7 @@ static ssize_t ocfs2_direct_IO_write(struct kiocb *iocb, > is_overwrite = ocfs2_is_overwrite(osb, inode, offset); > if (is_overwrite < 0) { > mlog_errno(is_overwrite); > + ret = is_overwrite; > ocfs2_inode_unlock(inode, 1); > goto clean_orphan; > }Looks OK. We do `goto clean_orphan' and if (orphan), the code then proceeds to overwrite the error code in `ret'. This is odd, and probably wrong - it's usually best to return the first-encountered error.