Commit 523ec6ed authored by Chuck Lever's avatar Chuck Lever

NFSD: Add a helper to decode state_protect4_a

Refactor for clarity.

Also, remove a stale comment. Commit ed941643 ("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: default avatarChuck Lever <chuck.lever@oracle.com>
parent 547bfeb4
...@@ -3066,7 +3066,7 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, ...@@ -3066,7 +3066,7 @@ nfsd4_exchange_id(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
rpc_ntop(sa, addr_str, sizeof(addr_str)); rpc_ntop(sa, addr_str, sizeof(addr_str));
dprintk("%s rqstp=%p exid=%p clname.len=%u clname.data=%p " 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, __func__, rqstp, exid, exid->clname.len, exid->clname.data,
addr_str, exid->flags, exid->spa_how); addr_str, exid->flags, exid->spa_how);
......
...@@ -1531,25 +1531,13 @@ nfsd4_decode_ssv_sp_parms(struct nfsd4_compoundargs *argp, ...@@ -1531,25 +1531,13 @@ nfsd4_decode_ssv_sp_parms(struct nfsd4_compoundargs *argp,
} }
static __be32 static __be32
nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, nfsd4_decode_state_protect4_a(struct nfsd4_compoundargs *argp,
struct nfsd4_exchange_id *exid) struct nfsd4_exchange_id *exid)
{ {
DECODE_HEAD; __be32 status;
int dummy;
READ_BUF(NFS4_VERIFIER_SIZE);
COPYMEM(exid->verifier.data, NFS4_VERIFIER_SIZE);
status = nfsd4_decode_opaque(argp, &exid->clname); if (xdr_stream_decode_u32(argp->xdr, &exid->spa_how) < 0)
if (status)
return nfserr_bad_xdr; 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) { switch (exid->spa_how) {
case SP4_NONE: case SP4_NONE:
break; break;
...@@ -1564,9 +1552,31 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp, ...@@ -1564,9 +1552,31 @@ nfsd4_decode_exchange_id(struct nfsd4_compoundargs *argp,
return status; return status;
break; break;
default: 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 */ READ_BUF(4); /* nfs_impl_id4 array length */
dummy = be32_to_cpup(p++); dummy = be32_to_cpup(p++);
......
...@@ -433,7 +433,7 @@ struct nfsd4_exchange_id { ...@@ -433,7 +433,7 @@ struct nfsd4_exchange_id {
u32 flags; u32 flags;
clientid_t clientid; clientid_t clientid;
u32 seqid; u32 seqid;
int spa_how; u32 spa_how;
u32 spo_must_enforce[3]; u32 spo_must_enforce[3];
u32 spo_must_allow[3]; u32 spo_must_allow[3];
struct xdr_netobj nii_domain; struct xdr_netobj nii_domain;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment