2018-11-08 16:11:37

by Scott Mayhew

[permalink] [raw]
Subject: [PATCH] nfsd: COPY and CLONE operations require the saved filehandle to be set

Make sure we have a saved filehandle, otherwise we'll oops with a null
pointer dereference in nfs4_preprocess_stateid_op().

Signed-off-by: Scott Mayhew <[email protected]>
---
fs/nfsd/nfs4proc.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
index edff074d38c7..d505990dac7c 100644
--- a/fs/nfsd/nfs4proc.c
+++ b/fs/nfsd/nfs4proc.c
@@ -1038,6 +1038,9 @@ nfsd4_verify_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
{
__be32 status;

+ if (!cstate->save_fh.fh_dentry)
+ return nfserr_nofilehandle;
+
status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->save_fh,
src_stateid, RD_STATE, src, NULL);
if (status) {
--
2.17.1



2018-11-08 17:12:04

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH] nfsd: COPY and CLONE operations require the saved filehandle to be set

Applying for 4.20 and stable, thanks!

--b.

On Thu, Nov 08, 2018 at 11:11:36AM -0500, Scott Mayhew wrote:
> Make sure we have a saved filehandle, otherwise we'll oops with a null
> pointer dereference in nfs4_preprocess_stateid_op().
>
> Signed-off-by: Scott Mayhew <[email protected]>
> ---
> fs/nfsd/nfs4proc.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
> index edff074d38c7..d505990dac7c 100644
> --- a/fs/nfsd/nfs4proc.c
> +++ b/fs/nfsd/nfs4proc.c
> @@ -1038,6 +1038,9 @@ nfsd4_verify_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
> {
> __be32 status;
>
> + if (!cstate->save_fh.fh_dentry)
> + return nfserr_nofilehandle;
> +
> status = nfs4_preprocess_stateid_op(rqstp, cstate, &cstate->save_fh,
> src_stateid, RD_STATE, src, NULL);
> if (status) {
> --
> 2.17.1