lkml.org 
[lkml]   [2018]   [Feb]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.14 068/110] afs: Fix missing error handling in afs_write_end()
    Date
    From: David Howells <dhowells@redhat.com>

    [ Upstream commit afae457d874860a7e299d334f59eede5f3ad4b47 ]

    afs_write_end() is missing page unlock and put if afs_fill_page() fails.

    Reported-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    fs/afs/write.c | 8 +++++---
    1 file changed, 5 insertions(+), 3 deletions(-)

    diff --git a/fs/afs/write.c b/fs/afs/write.c
    index 106e43db1115..926d4d68f791 100644
    --- a/fs/afs/write.c
    +++ b/fs/afs/write.c
    @@ -282,7 +282,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);
    }
    @@ -290,10 +290,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;
    }

    /*
    --
    2.11.0
    \
     
     \ /
      Last update: 2018-02-03 19:42    [W:4.028 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site