2022-01-17 08:04:35

by Tom Rix

[permalink] [raw]
Subject: [PATCH] NFS: simplify check for freeing cn_resp

From: Tom Rix <[email protected]>

nfs42_files_from_same_server() is called to check if freeing
cn_resp is required. Instead of calling a function, check
the pointer.

Signed-off-by: Tom Rix <[email protected]>
---
fs/nfs/nfs4file.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
index e79ae4cbc395e..677631ea4cfb3 100644
--- a/fs/nfs/nfs4file.c
+++ b/fs/nfs/nfs4file.c
@@ -180,7 +180,7 @@ static ssize_t __nfs4_copy_file_range(struct file *file_in, loff_t pos_in,
ret = nfs42_proc_copy(file_in, pos_in, file_out, pos_out, count,
nss, cnrs, sync);
out:
- if (!nfs42_files_from_same_server(file_in, file_out))
+ if (cn_resp)
kfree(cn_resp);
if (ret == -EAGAIN)
goto retry;
--
2.26.3


2022-01-17 08:28:13

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH] NFS: simplify check for freeing cn_resp

Hi Tom,

On Sun, 2022-01-16 at 06:43 -0800, [email protected] wrote:
> From: Tom Rix <[email protected]>
>
> nfs42_files_from_same_server() is called to check if freeing
> cn_resp is required.  Instead of calling a function, check
> the pointer.
>
> Signed-off-by: Tom Rix <[email protected]>
> ---
>  fs/nfs/nfs4file.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/nfs/nfs4file.c b/fs/nfs/nfs4file.c
> index e79ae4cbc395e..677631ea4cfb3 100644
> --- a/fs/nfs/nfs4file.c
> +++ b/fs/nfs/nfs4file.c
> @@ -180,7 +180,7 @@ static ssize_t __nfs4_copy_file_range(struct file
> *file_in, loff_t pos_in,
>         ret = nfs42_proc_copy(file_in, pos_in, file_out, pos_out,
> count,
>                                 nss, cnrs, sync);
>  out:
> -       if (!nfs42_files_from_same_server(file_in, file_out))
> +       if (cn_resp)
>                 kfree(cn_resp);

The kernel convention in these circumstances is to just skip the NULL
pointer check, since kfree() does that anyway.

>         if (ret == -EAGAIN)
>                 goto retry;

--
Trond Myklebust
Linux NFS client maintainer, Hammerspace
[email protected]