diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfsd/nfs4state.c | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index fb9b4eb4302d..2a59d176e69a 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -674,23 +674,13 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_setclientid *setclid) | |||
674 | * or different ip_address | 674 | * or different ip_address |
675 | */ | 675 | */ |
676 | status = nfserr_clid_inuse; | 676 | status = nfserr_clid_inuse; |
677 | if (!cmp_creds(&clp->cl_cred,&rqstp->rq_cred)) { | 677 | if (!cmp_creds(&clp->cl_cred,&rqstp->rq_cred) |
678 | || clp->cl_addr != ip_addr) { | ||
678 | printk("NFSD: setclientid: string in use by client" | 679 | printk("NFSD: setclientid: string in use by client" |
679 | "(clientid %08x/%08x)\n", | 680 | "(clientid %08x/%08x)\n", |
680 | clp->cl_clientid.cl_boot, clp->cl_clientid.cl_id); | 681 | clp->cl_clientid.cl_boot, clp->cl_clientid.cl_id); |
681 | goto out; | 682 | goto out; |
682 | } | 683 | } |
683 | if (clp->cl_addr != ip_addr) { | ||
684 | printk("NFSD: setclientid: string in use by client" | ||
685 | "(clientid %08x/%08x)\n", | ||
686 | clp->cl_clientid.cl_boot, clp->cl_clientid.cl_id); | ||
687 | goto out; | ||
688 | } | ||
689 | |||
690 | /* | ||
691 | * cl_name match from a previous SETCLIENTID operation | ||
692 | * XXX check for additional matches? | ||
693 | */ | ||
694 | conf = clp; | 684 | conf = clp; |
695 | break; | 685 | break; |
696 | } | 686 | } |