lkml.org 
[lkml]   [2019]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 79/92] CIFS: Gracefully handle QueryInfo errors during open
    Date
    From: Pavel Shilovsky <piastryyy@gmail.com>

    commit 30573a82fb179420b8aac30a3a3595aa96a93156 upstream.

    Currently if the client identifies problems when processing
    metadata returned in CREATE response, the open handle is being
    leaked. This causes multiple problems like a file missing a lease
    break by that client which causes high latencies to other clients
    accessing the file. Another side-effect of this is that the file
    can't be deleted.

    Fix this by closing the file after the client hits an error after
    the file was opened and the open descriptor wasn't returned to
    the user space. Also convert -ESTALE to -EOPENSTALE to allow
    the VFS to revalidate a dentry and retry the open.

    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/cifs/file.c | 6 ++++++
    1 file changed, 6 insertions(+)

    --- a/fs/cifs/file.c
    +++ b/fs/cifs/file.c
    @@ -252,6 +252,12 @@ cifs_nt_open(char *full_path, struct ino
    rc = cifs_get_inode_info(&inode, full_path, buf, inode->i_sb,
    xid, fid);

    + if (rc) {
    + server->ops->close(xid, tcon, fid);
    + if (rc == -ESTALE)
    + rc = -EOPENSTALE;
    + }
    +
    out:
    kfree(buf);
    return rc;

    \
     
     \ /
      Last update: 2019-10-17 00:16    [W:3.839 / U:0.928 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site