diff options
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 0f4e54033abf..94494f24bb12 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -5052,7 +5052,8 @@ out_inval: | |||
5052 | } | 5052 | } |
5053 | 5053 | ||
5054 | static bool | 5054 | static bool |
5055 | nfs41_same_server_scope(struct server_scope *a, struct server_scope *b) | 5055 | nfs41_same_server_scope(struct nfs41_server_scope *a, |
5056 | struct nfs41_server_scope *b) | ||
5056 | { | 5057 | { |
5057 | if (a->server_scope_sz == b->server_scope_sz && | 5058 | if (a->server_scope_sz == b->server_scope_sz && |
5058 | memcmp(a->server_scope, b->server_scope, a->server_scope_sz) == 0) | 5059 | memcmp(a->server_scope, b->server_scope, a->server_scope_sz) == 0) |
@@ -5099,7 +5100,8 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred) | |||
5099 | clp->cl_rpcclient->cl_nodename, | 5100 | clp->cl_rpcclient->cl_nodename, |
5100 | clp->cl_rpcclient->cl_auth->au_flavor); | 5101 | clp->cl_rpcclient->cl_auth->au_flavor); |
5101 | 5102 | ||
5102 | res.server_scope = kzalloc(sizeof(struct server_scope), GFP_KERNEL); | 5103 | res.server_scope = kzalloc(sizeof(struct nfs41_server_scope), |
5104 | GFP_KERNEL); | ||
5103 | if (unlikely(!res.server_scope)) { | 5105 | if (unlikely(!res.server_scope)) { |
5104 | status = -ENOMEM; | 5106 | status = -ENOMEM; |
5105 | goto out; | 5107 | goto out; |
@@ -5123,18 +5125,18 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred) | |||
5123 | kfree(res.impl_id); | 5125 | kfree(res.impl_id); |
5124 | 5126 | ||
5125 | if (!status) { | 5127 | if (!status) { |
5126 | if (clp->server_scope && | 5128 | if (clp->cl_serverscope && |
5127 | !nfs41_same_server_scope(clp->server_scope, | 5129 | !nfs41_same_server_scope(clp->cl_serverscope, |
5128 | res.server_scope)) { | 5130 | res.server_scope)) { |
5129 | dprintk("%s: server_scope mismatch detected\n", | 5131 | dprintk("%s: server_scope mismatch detected\n", |
5130 | __func__); | 5132 | __func__); |
5131 | set_bit(NFS4CLNT_SERVER_SCOPE_MISMATCH, &clp->cl_state); | 5133 | set_bit(NFS4CLNT_SERVER_SCOPE_MISMATCH, &clp->cl_state); |
5132 | kfree(clp->server_scope); | 5134 | kfree(clp->cl_serverscope); |
5133 | clp->server_scope = NULL; | 5135 | clp->cl_serverscope = NULL; |
5134 | } | 5136 | } |
5135 | 5137 | ||
5136 | if (!clp->server_scope) { | 5138 | if (!clp->cl_serverscope) { |
5137 | clp->server_scope = res.server_scope; | 5139 | clp->cl_serverscope = res.server_scope; |
5138 | goto out; | 5140 | goto out; |
5139 | } | 5141 | } |
5140 | } | 5142 | } |