2022-08-19 19:20:04

by Olga Kornievskaia

[permalink] [raw]
Subject: [PATCH 1/1] NFSD enforce filehandle check for source file in COPY

From: Olga Kornievskaia <[email protected]>

If the passed in filehandle for the source file in the COPY operation
is not a regular file, the server MUST return NFS4ERR_WRONG_TYPE.

Signed-off-by: Olga Kornievskaia <[email protected]>
---
fs/nfsd/nfs4proc.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index a72ab97f77ef..d8f05d96fe68 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1768,7 +1768,13 @@ static int nfsd4_do_async_copy(void *data)
filp = nfs42_ssc_open(copy->ss_mnt, &copy->c_fh,
&copy->stateid);
if (IS_ERR(filp)) {
- nfserr = nfserr_offload_denied;
+ switch (PTR_ERR(filp)) {
+ case -EBADF:
+ nfserr = nfserr_wrong_type;
+ break;
+ default:
+ nfserr = nfserr_offload_denied;
+ }
nfsd4_interssc_disconnect(copy->ss_mnt);
goto do_callback;
}
--
2.18.2


2022-08-19 19:48:39

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH 1/1] NFSD enforce filehandle check for source file in COPY

On Fri, 2022-08-19 at 15:16 -0400, Olga Kornievskaia wrote:
> From: Olga Kornievskaia <[email protected]>
>
> If the passed in filehandle for the source file in the COPY operation
> is not a regular file, the server MUST return NFS4ERR_WRONG_TYPE.
>
> Signed-off-by: Olga Kornievskaia <[email protected]>
> ---
> fs/nfsd/nfs4proc.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index a72ab97f77ef..d8f05d96fe68 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -1768,7 +1768,13 @@ static int nfsd4_do_async_copy(void *data)
> filp = nfs42_ssc_open(copy->ss_mnt, &copy->c_fh,
> &copy->stateid);
> if (IS_ERR(filp)) {
> - nfserr = nfserr_offload_denied;
> + switch (PTR_ERR(filp)) {
> + case -EBADF:
> + nfserr = nfserr_wrong_type;
> + break;
> + default:
> + nfserr = nfserr_offload_denied;
> + }
> nfsd4_interssc_disconnect(copy->ss_mnt);
> goto do_callback;
> }

Reviewed-by: Jeff Layton <[email protected]>