aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@citi.umich.edu>2009-03-18 15:06:26 -0400
committerJ. Bruce Fields <bfields@citi.umich.edu>2009-03-18 17:38:42 -0400
commit026722c25e6eb018eab8b9a3c198c258f5b7a2e7 (patch)
treeb57fa768c7cdaaa21257a57e96427411bf015b0b
parent03cf6c9f49a8fea953d38648d016e3f46e814991 (diff)
nfsd4: don't check ip address in setclientid
The spec allows clients to change ip address, so we shouldn't be requiring that setclientid always come from the same address. For example, a client could reboot and get a new dhcpd address, but still present the same clientid to the server. In that case the server should revoke the client's previous state and allow it to continue, instead of (as it currently does) returning a CLID_INUSE error. Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
-rw-r--r--fs/nfsd/nfs4state.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 54651aa45790..070e9e5c0452 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -791,10 +791,9 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
791 if (conf) { 791 if (conf) {
792 /* RFC 3530 14.2.33 CASE 0: */ 792 /* RFC 3530 14.2.33 CASE 0: */
793 status = nfserr_clid_inuse; 793 status = nfserr_clid_inuse;
794 if (!same_creds(&conf->cl_cred, &rqstp->rq_cred) 794 if (!same_creds(&conf->cl_cred, &rqstp->rq_cred)) {
795 || conf->cl_addr != sin->sin_addr.s_addr) { 795 dprintk("NFSD: setclientid: string in use by client"
796 dprintk("NFSD: setclientid: string in use by clientat %pI4\n", 796 " at %pI4\n", &conf->cl_addr);
797 &conf->cl_addr);
798 goto out; 797 goto out;
799 } 798 }
800 } 799 }