NFSD: Add a helper to decode state_protect4_a
Refactor for clarity.
Also, remove a stale comment. Commit ed94164398
("nfsd: implement
machine credential support for some operations") added support for
SP4_MACH_CRED, so state_protect_a is no longer completely ignored.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
547bfeb4cd
commit
523ec6ed6f
|
@ -3066,7 +3066,7 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
|
|||
|
||||
rpc_ntop(sa, addr_str, sizeof(addr_str));
|
||||
dprintk("%s rqstp=%p exid=%p clname.len=%u clname.data=%p "
|
||||
"ip_addr=%s flags %x, spa_how %d\n",
|
||||
"ip_addr=%s flags %x, spa_how %u\n",
|
||||
__func__, rqstp, exid, exid->clname.len, exid->clname.data,
|
||||
addr_str, exid->flags, exid->spa_how);
|
||||
|
||||
|
|
|
@ -1531,25 +1531,13 @@ nfsd4_decode_ssv_sp_parms(struct nfsd4_compoundargs *argp,
|
|||
}
|
||||
|
||||
static __be32
|
||||
nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
|
||||
struct nfsd4_exchange_id *exid)
|
||||
nfsd4_decode_state_protect4_a(struct nfsd4_compoundargs *argp,
|
||||
struct nfsd4_exchange_id *exid)
|
||||
{
|
||||
DECODE_HEAD;
|
||||
int dummy;
|
||||
__be32 status;
|
||||
|
||||
READ_BUF(NFS4_VERIFIER_SIZE);
|
||||
COPYMEM(exid->verifier.data, NFS4_VERIFIER_SIZE);
|
||||
|
||||
status = nfsd4_decode_opaque(argp, &exid->clname);
|
||||
if (status)
|
||||
if (xdr_stream_decode_u32(argp->xdr, &exid->spa_how) < 0)
|
||||
return nfserr_bad_xdr;
|
||||
|
||||
READ_BUF(4);
|
||||
exid->flags = be32_to_cpup(p++);
|
||||
|
||||
/* Ignore state_protect4_a */
|
||||
READ_BUF(4);
|
||||
exid->spa_how = be32_to_cpup(p++);
|
||||
switch (exid->spa_how) {
|
||||
case SP4_NONE:
|
||||
break;
|
||||
|
@ -1564,9 +1552,31 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
|
|||
return status;
|
||||
break;
|
||||
default:
|
||||
goto xdr_error;
|
||||
return nfserr_bad_xdr;
|
||||
}
|
||||
|
||||
return nfs_ok;
|
||||
}
|
||||
|
||||
static __be32
|
||||
nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
|
||||
struct nfsd4_exchange_id *exid)
|
||||
{
|
||||
DECODE_HEAD;
|
||||
int dummy;
|
||||
|
||||
status = nfsd4_decode_verifier4(argp, &exid->verifier);
|
||||
if (status)
|
||||
return status;
|
||||
status = nfsd4_decode_opaque(argp, &exid->clname);
|
||||
if (status)
|
||||
return status;
|
||||
if (xdr_stream_decode_u32(argp->xdr, &exid->flags) < 0)
|
||||
return nfserr_bad_xdr;
|
||||
status = nfsd4_decode_state_protect4_a(argp, exid);
|
||||
if (status)
|
||||
return status;
|
||||
|
||||
READ_BUF(4); /* nfs_impl_id4 array length */
|
||||
dummy = be32_to_cpup(p++);
|
||||
|
||||
|
|
|
@ -433,7 +433,7 @@ struct nfsd4_exchange_id {
|
|||
u32 flags;
|
||||
clientid_t clientid;
|
||||
u32 seqid;
|
||||
int spa_how;
|
||||
u32 spa_how;
|
||||
u32 spo_must_enforce[3];
|
||||
u32 spo_must_allow[3];
|
||||
struct xdr_netobj nii_domain;
|
||||
|
|
Loading…
Reference in New Issue