diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-09 12:43:06 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-07-03 11:23:16 +0200 |
commit | cdc83c366977044d7717d56f6bb1aa247e1dc582 (patch) | |
tree | 31db38325524a51b0c9a5e3ba28d797bb02fb116 | |
parent | 5b7f582e808d6b39eb0751deb1b6685813b05847 (diff) | |
download | linux-stable-cdc83c366977044d7717d56f6bb1aa247e1dc582.tar.gz linux-stable-cdc83c366977044d7717d56f6bb1aa247e1dc582.tar.bz2 linux-stable-cdc83c366977044d7717d56f6bb1aa247e1dc582.zip |
NFSv4: Revert commit 5f83d86cf531d ("NFSv4.x: Fix wraparound issues..")
commit fc40724fc6731d90cc7fb6d62d66135f85a33dd2 upstream.
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-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 e9aa235e9d10..2e7ebd9d7168 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c @@ -402,11 +402,8 @@ validate_seqid(const struct nfs4_slot_table *tbl, const struct nfs4_slot *slot, return htonl(NFS4ERR_SEQ_FALSE_RETRY); } - /* Wraparound */ - if (unlikely(slot->seq_nr == 0xFFFFFFFFU)) { - if (args->csa_sequenceid == 1) - return htonl(NFS4_OK); - } else if (likely(args->csa_sequenceid == slot->seq_nr + 1)) + /* Note: wraparound relies on seq_nr being of type u32 */ + if (likely(args->csa_sequenceid == slot->seq_nr + 1)) return htonl(NFS4_OK); /* Misordered request */ |