2015-08-25 15:01:51

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] nfs:Fix variable assignment for return value to caller in the function _nfs4_proc_delegreturn

On Tue, Aug 25, 2015 at 10:46 AM, Nicholas Krause <[email protected]> wrote:
> This fixes incorrect variable assignment in the function
> _nfs4_proc_delegreturn for when calling either one of the
> functions nfs_post_op_update_inode_force_wcc or the function
> nfs_refresh_inode due to the variable status which the
> function _nfs_proc_delegreturn uses for failure to instead
> properly assign to the variable status used for this function's
> return statement to properly signal to the caller when a failure
> occurs when calling here of these functions internally.
>
> Signed-off-by: Nicholas Krause <[email protected]>
> ---
> fs/nfs/nfs4proc.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 3acb1eb..3a94a6e 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -5353,9 +5353,9 @@ static int _nfs4_proc_delegreturn(struct inode *inode, struct rpc_cred *cred, co
> goto out;
> status = data->rpc_status;
> if (status == 0)
> - nfs_post_op_update_inode_force_wcc(inode, &data->fattr);
> + status = nfs_post_op_update_inode_force_wcc(inode, &data->fattr);
> else
> - nfs_refresh_inode(inode, &data->fattr);
> + status = nfs_refresh_inode(inode, &data->fattr);
> out:
> rpc_put_task(task);
> return status;
> --
> 2.1.4
>

NACK. The success or failure of those 2 operations is completely
immaterial to the success or failure of delegreturn, which is why we
don't test their return values.