diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-05-26 13:41:04 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-05-26 14:17:31 -0400 |
commit | 32b0131069c5bebf52368a9fe170f8d58b78fa8d (patch) | |
tree | 540451b739e9938b2f15682a0bab117852bc8e4e /include/linux | |
parent | 662455391040a783b89d0232e743c27c23617dbd (diff) |
NFSv4.1: Don't clobber the seqid if exchange_id returns a confirmed clientid
If the EXCHGID4_FLAG_CONFIRMED_R flag is set, the client is in theory
supposed to already know the correct value of the seqid, in which case
RFC5661 states that it should ignore the value returned.
Also ensure that if the sanity check in nfs4_check_cl_exchange_flags
fails, then we must not change the nfs_client fields.
Finally, clean up the code: we don't need to retest the value of
'status' unless it can change.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/nfs_xdr.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 6387fc0097fe..d1a7bf51c326 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
@@ -1132,7 +1132,8 @@ struct nfs41_bind_conn_to_session_res { | |||
1132 | }; | 1132 | }; |
1133 | 1133 | ||
1134 | struct nfs41_exchange_id_res { | 1134 | struct nfs41_exchange_id_res { |
1135 | struct nfs_client *client; | 1135 | u64 clientid; |
1136 | u32 seqid; | ||
1136 | u32 flags; | 1137 | u32 flags; |
1137 | struct nfs41_server_owner *server_owner; | 1138 | struct nfs41_server_owner *server_owner; |
1138 | struct nfs41_server_scope *server_scope; | 1139 | struct nfs41_server_scope *server_scope; |