From: David Howells Date: Tue, 2 Jan 2018 10:02:19 +0000 (+0000) Subject: afs: Fix missing error handling in afs_write_end() X-Git-Tag: v4.15-rc7~24^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=afae457d874860a7e299d334f59eede5f3ad4b47;p=uclinux-h8%2Flinux.git afs: Fix missing error handling in afs_write_end() afs_write_end() is missing page unlock and put if afs_fill_page() fails. Reported-by: Al Viro Signed-off-by: David Howells --- diff --git a/fs/afs/write.c b/fs/afs/write.c index cb5f8a3df577..9370e2feb999 100644 --- a/fs/afs/write.c +++ b/fs/afs/write.c @@ -198,7 +198,7 @@ int afs_write_end(struct file *file, struct address_space *mapping, ret = afs_fill_page(vnode, key, pos + copied, len - copied, page); if (ret < 0) - return ret; + goto out; } SetPageUptodate(page); } @@ -206,10 +206,12 @@ int afs_write_end(struct file *file, struct address_space *mapping, set_page_dirty(page); if (PageDirty(page)) _debug("dirtied"); + ret = copied; + +out: unlock_page(page); put_page(page); - - return copied; + return ret; } /*