diff options
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 11 |
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) |