From: NeilBrown Date: Fri, 24 Jun 2005 05:04:06 +0000 (-0700) Subject: [PATCH] knfsd: nfsd4: fix uncomfirmed list X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=31f4a6c127f619886bf97f643e546f7788248f3f;p=deliverable%2Flinux.git [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 Signed-off-by: Neil Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- 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) * nfs4_client, but with the new callback info and a * new cl_confirm */ - if ((unconf) && - cmp_verf(&unconf->cl_verifier, &conf->cl_verifier) && - cmp_clid(&unconf->cl_clientid, &conf->cl_clientid)) { - expire_client(unconf); + if (unconf) { + /* Note this is removing unconfirmed {*x***}, + * which is stronger than RFC recommended {vxc**}. + * This has the advantage that there is at most + * one {*x***} in either list at any time. + */ + expire_client(unconf); } new = create_client(clname, dname); if (new == NULL)