Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 57616300 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4: fix seqid_mutating_error



The set of errors here does *not* agree with the set of errors specified
in the rfc!

While we're there, turn this macros into a function, for the usual
reasons, and move it to the one place where it's actually used.

Cc: stable@kernel.org
Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
parent 832023bf
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -1623,6 +1623,18 @@ static void write_cinfo(__be32 **p, struct nfsd4_change_info *c)
								\
	save = resp->p;

static bool seqid_mutating_err(__be32 err)
{
	/* rfc 3530 section 8.1.5: */
	return	err != nfserr_stale_clientid &&
		err != nfserr_stale_stateid &&
		err != nfserr_bad_stateid &&
		err != nfserr_bad_seqid &&
		err != nfserr_bad_xdr &&
		err != nfserr_resource &&
		err != nfserr_nofilehandle;
}

/*
 * Routine for encoding the result of a "seqid-mutating" NFSv4 operation.  This
 * is where sequence id's are incremented, and the replay cache is filled.
+0 −6
Original line number Diff line number Diff line
@@ -447,12 +447,6 @@ struct nfs4_stateid {
#define WR_STATE	        0x00000020
#define CLOSE_STATE             0x00000040

#define seqid_mutating_err(err)                       \
	(((err) != nfserr_stale_clientid) &&    \
	((err) != nfserr_bad_seqid) &&          \
	((err) != nfserr_stale_stateid) &&      \
	((err) != nfserr_bad_stateid))

struct nfsd4_compound_state;

extern __be32 nfs4_preprocess_stateid_op(struct nfsd4_compound_state *cstate,