diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-09 12:43:06 -0400 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-09 12:56:30 -0400 |
commit | fc40724fc6731d90cc7fb6d62d66135f85a33dd2 (patch) | |
tree | 791a9c413993091ee07d589e43659ab284c19ae0 | |
parent | ce5624f7e6675ae0425f0041bbad703ea41c784c (diff) |
NFSv4: Revert commit 5f83d86cf531d ("NFSv4.x: Fix wraparound issues..")
The correct behaviour for NFSv4 sequence IDs is to wrap around
to the value 0 after 0xffffffff.
See https://tools.ietf.org/html/rfc5661#section-2.10.6.1
Fixes: 5f83d86cf531d ("NFSv4.x: Fix wraparound issues when validing...")
Cc: stable@vger.kernel.org # 4.6+
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
-rw-r--r-- | fs/nfs/callback_proc.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c index 3a49bb19ef07..ee81031cab29 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c | |||
@@ -428,11 +428,8 @@ validate_seqid(const struct nfs4_slot_table *tbl, const struct nfs4_slot *slot, | |||
428 | return htonl(NFS4ERR_SEQ_FALSE_RETRY); | 428 | return htonl(NFS4ERR_SEQ_FALSE_RETRY); |
429 | } | 429 | } |
430 | 430 | ||
431 | /* Wraparound */ | 431 | /* Note: wraparound relies on seq_nr being of type u32 */ |
432 | if (unlikely(slot->seq_nr == 0xFFFFFFFFU)) { | 432 | if (likely(args->csa_sequenceid == slot->seq_nr + 1)) |
433 | if (args->csa_sequenceid == 1) | ||
434 | return htonl(NFS4_OK); | ||
435 | } else if (likely(args->csa_sequenceid == slot->seq_nr + 1)) | ||
436 | return htonl(NFS4_OK); | 433 | return htonl(NFS4_OK); |
437 | 434 | ||
438 | /* Misordered request */ | 435 | /* Misordered request */ |