Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 308672
b: refs/heads/master
c: 32b0131
h: refs/heads/master
v: v3
  • Loading branch information
Trond Myklebust authored and Trond Myklebust committed May 26, 2012
1 parent 587b31a commit 0330438
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 662455391040a783b89d0232e743c27c23617dbd
refs/heads/master: 32b0131069c5bebf52368a9fe170f8d58b78fa8d
17 changes: 9 additions & 8 deletions trunk/fs/nfs/nfs4proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -5171,7 +5171,7 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
.flags = EXCHGID4_FLAG_SUPP_MOVED_REFER,
};
struct nfs41_exchange_id_res res = {
.client = clp,
0
};
int status;
struct rpc_message msg = {
Expand Down Expand Up @@ -5214,22 +5214,22 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)

status = rpc_call_sync(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT);
if (status == 0)
status = nfs4_check_cl_exchange_flags(clp->cl_exchange_flags);
status = nfs4_check_cl_exchange_flags(res.flags);

if (status == 0) {
clp->cl_clientid = res.clientid;
clp->cl_exchange_flags = (res.flags & ~EXCHGID4_FLAG_CONFIRMED_R);
if (!(res.flags & EXCHGID4_FLAG_CONFIRMED_R))
clp->cl_seqid = res.seqid;

kfree(clp->cl_serverowner);
clp->cl_serverowner = res.server_owner;
res.server_owner = NULL;
}

if (status == 0) {
/* use the most recent implementation id */
kfree(clp->cl_implid);
clp->cl_implid = res.impl_id;
} else
kfree(res.impl_id);

if (status == 0) {
if (clp->cl_serverscope != NULL &&
!nfs41_same_server_scope(clp->cl_serverscope,
res.server_scope)) {
Expand All @@ -5244,7 +5244,8 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred)
clp->cl_serverscope = res.server_scope;
goto out;
}
}
} else
kfree(res.impl_id);

out_server_owner:
kfree(res.server_owner);
Expand Down
7 changes: 3 additions & 4 deletions trunk/fs/nfs/nfs4xdr.c
Original file line number Diff line number Diff line change
Expand Up @@ -5319,7 +5319,6 @@ static int decode_exchange_id(struct xdr_stream *xdr,
uint32_t dummy;
char *dummy_str;
int status;
struct nfs_client *clp = res->client;
uint32_t impl_id_count;

status = decode_op_hdr(xdr, OP_EXCHANGE_ID);
Expand All @@ -5329,12 +5328,12 @@ static int decode_exchange_id(struct xdr_stream *xdr,
p = xdr_inline_decode(xdr, 8);
if (unlikely(!p))
goto out_overflow;
xdr_decode_hyper(p, &clp->cl_clientid);
xdr_decode_hyper(p, &res->clientid);
p = xdr_inline_decode(xdr, 12);
if (unlikely(!p))
goto out_overflow;
clp->cl_seqid = be32_to_cpup(p++);
clp->cl_exchange_flags = be32_to_cpup(p++);
res->seqid = be32_to_cpup(p++);
res->flags = be32_to_cpup(p++);

/* We ask for SP4_NONE */
dummy = be32_to_cpup(p);
Expand Down
3 changes: 2 additions & 1 deletion trunk/include/linux/nfs_xdr.h
Original file line number Diff line number Diff line change
Expand Up @@ -1132,7 +1132,8 @@ struct nfs41_bind_conn_to_session_res {
};

struct nfs41_exchange_id_res {
struct nfs_client *client;
u64 clientid;
u32 seqid;
u32 flags;
struct nfs41_server_owner *server_owner;
struct nfs41_server_scope *server_scope;
Expand Down

0 comments on commit 0330438

Please sign in to comment.