diff options
author | J. Bruce Fields <bfields@redhat.com> | 2012-02-13 16:13:41 -0500 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2012-02-13 16:15:18 -0500 |
commit | f6d82485e9a947ae19bb29e72644f4c6f27d5b89 (patch) | |
tree | 9bb1482584904710aab722b6c9b2b5e5b49780eb /fs/nfsd | |
parent | 508f92275624fc755104b17945bdc822936f1918 (diff) | |
download | linux-f6d82485e9a947ae19bb29e72644f4c6f27d5b89.tar.gz linux-f6d82485e9a947ae19bb29e72644f4c6f27d5b89.tar.bz2 linux-f6d82485e9a947ae19bb29e72644f4c6f27d5b89.zip |
nfsd4: fix sessions slotid wraparound logic
From RFC 5661 2.10.6.1: "If the previous sequence ID was 0xFFFFFFFF,
then the next request for the slot MUST have the sequence ID set to
zero."
While we're there, delete some redundant comments.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4state.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index e8c98f009670..2095dbb2923e 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -1575,16 +1575,11 @@ check_slot_seqid(u32 seqid, u32 slot_seqid, int slot_inuse) else return nfserr_seq_misordered; } - /* Normal */ + /* Note unsigned 32-bit arithmetic handles wraparound: */ if (likely(seqid == slot_seqid + 1)) return nfs_ok; - /* Replay */ if (seqid == slot_seqid) return nfserr_replay_cache; - /* Wraparound */ - if (seqid == 1 && (slot_seqid + 1) == 0) - return nfs_ok; - /* Misordered replay or misordered new request */ return nfserr_seq_misordered; } |