NFSv4: Revert commit 5f83d86cf531d ("NFSv4.x: Fix wraparound issues..")
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Sat, 9 Jun 2018 16:43:06 +0000 (12:43 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Jul 2018 09:25:02 +0000 (11:25 +0200)
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>
fs/nfs/callback_proc.c

index 19151f6c0e97e32d4f58245a75c0b237194911b0..516b2248cafe8ad5f074be1af0c7ad52d1fffd3e 100644 (file)
@@ -420,11 +420,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 */