nfsd4: don't check ip address in setclientid
authorJ. Bruce Fields <bfields@citi.umich.edu>
Wed, 18 Mar 2009 19:06:26 +0000 (15:06 -0400)
committerJ. Bruce Fields <bfields@citi.umich.edu>
Wed, 18 Mar 2009 21:38:42 +0000 (17:38 -0400)
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>
fs/nfsd/nfs4state.c

index 54651aa4579016c6e20e7de34e1118a6bb488504..070e9e5c0452da816dfcaa52c04ad038e377dd83 100644 (file)
@@ -791,10 +791,9 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
        if (conf) {
                /* RFC 3530 14.2.33 CASE 0: */
                status = nfserr_clid_inuse;
-               if (!same_creds(&conf->cl_cred, &rqstp->rq_cred)
-                               || conf->cl_addr != sin->sin_addr.s_addr) {
-                       dprintk("NFSD: setclientid: string in use by clientat %pI4\n",
-                               &conf->cl_addr);
+               if (!same_creds(&conf->cl_cred, &rqstp->rq_cred)) {
+                       dprintk("NFSD: setclientid: string in use by client"
+                               " at %pI4\n", &conf->cl_addr);
                        goto out;
                }
        }