lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 109/214] NFS: fix nfs_path in case of a rename retry
    Date
    From: Ashish Sangwan <ashishsangwan2@gmail.com>

    commit 247db73560bc3e5aef6db50c443c3c0db115bc93 upstream.

    We are generating incorrect path in case of rename retry because
    we are restarting from wrong dentry. We should restart from the
    dentry which was received in the call to nfs_path.

    CC: stable@vger.kernel.org
    Signed-off-by: Ashish Sangwan <ashishsangwan2@gmail.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/nfs/namespace.c | 12 ++++++++----
    1 file changed, 8 insertions(+), 4 deletions(-)

    --- a/fs/nfs/namespace.c
    +++ b/fs/nfs/namespace.c
    @@ -31,9 +31,9 @@ int nfs_mountpoint_expiry_timeout = 500
    /*
    * nfs_path - reconstruct the path given an arbitrary dentry
    * @base - used to return pointer to the end of devname part of path
    - * @dentry - pointer to dentry
    + * @dentry_in - pointer to dentry
    * @buffer - result buffer
    - * @buflen - length of buffer
    + * @buflen_in - length of buffer
    * @flags - options (see below)
    *
    * Helper function for constructing the server pathname
    @@ -48,15 +48,19 @@ int nfs_mountpoint_expiry_timeout = 500
    * the original device (export) name
    * (if unset, the original name is returned verbatim)
    */
    -char *nfs_path(char **p, struct dentry *dentry, char *buffer, ssize_t buflen,
    - unsigned flags)
    +char *nfs_path(char **p, struct dentry *dentry_in, char *buffer,
    + ssize_t buflen_in, unsigned flags)
    {
    char *end;
    int namelen;
    unsigned seq;
    const char *base;
    + struct dentry *dentry;
    + ssize_t buflen;

    rename_retry:
    + buflen = buflen_in;
    + dentry = dentry_in;
    end = buffer+buflen;
    *--end = '\0';
    buflen--;

    \
     
     \ /
      Last update: 2020-11-03 22:40    [W:4.087 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site