aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@cse.unsw.edu.au>2005-06-24 01:04:06 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-24 03:06:33 -0400
commit31f4a6c127f619886bf97f643e546f7788248f3f (patch)
tree5c473562ea9051e42a53631f26486959d43fcaa4
parentfd39ca9a808c6026989bc2188868a0574eb37108 (diff)
[PATCH] knfsd: nfsd4: fix uncomfirmed list
Setclientid code assumes there is only one match in unconfirmed list. Make sure that assumption holds. From: Fred Isaman Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/nfsd/nfs4state.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 8a5f777b1e96..67a038dc0d0e 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -743,10 +743,13 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_setclientid *setclid)
743 * nfs4_client, but with the new callback info and a 743 * nfs4_client, but with the new callback info and a
744 * new cl_confirm 744 * new cl_confirm
745 */ 745 */
746 if ((unconf) && 746 if (unconf) {
747 cmp_verf(&unconf->cl_verifier, &conf->cl_verifier) && 747 /* Note this is removing unconfirmed {*x***},
748 cmp_clid(&unconf->cl_clientid, &conf->cl_clientid)) { 748 * which is stronger than RFC recommended {vxc**}.
749 expire_client(unconf); 749 * This has the advantage that there is at most
750 * one {*x***} in either list at any time.
751 */
752 expire_client(unconf);
750 } 753 }
751 new = create_client(clname, dname); 754 new = create_client(clname, dname);
752 if (new == NULL) 755 if (new == NULL)