mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
NFSv4.1: fix SECINFO* use of put_rpccred
Recent SP4_MACH_CRED changes allows rpc_message.rpc_cred to change, so keep a separate pointer to the machine cred for put_rpccred. Signed-off-by: Weston Andros Adamson <dros@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
a02796250f
commit
7cb852dfc8
@ -6003,10 +6003,12 @@ static int _nfs4_proc_secinfo(struct inode *dir, const struct qstr *name, struct
|
|||||||
.rpc_resp = &res,
|
.rpc_resp = &res,
|
||||||
};
|
};
|
||||||
struct rpc_clnt *clnt = NFS_SERVER(dir)->client;
|
struct rpc_clnt *clnt = NFS_SERVER(dir)->client;
|
||||||
|
struct rpc_cred *cred = NULL;
|
||||||
|
|
||||||
if (use_integrity) {
|
if (use_integrity) {
|
||||||
clnt = NFS_SERVER(dir)->nfs_client->cl_rpcclient;
|
clnt = NFS_SERVER(dir)->nfs_client->cl_rpcclient;
|
||||||
msg.rpc_cred = nfs4_get_clid_cred(NFS_SERVER(dir)->nfs_client);
|
cred = nfs4_get_clid_cred(NFS_SERVER(dir)->nfs_client);
|
||||||
|
msg.rpc_cred = cred;
|
||||||
}
|
}
|
||||||
|
|
||||||
dprintk("NFS call secinfo %s\n", name->name);
|
dprintk("NFS call secinfo %s\n", name->name);
|
||||||
@ -6018,8 +6020,8 @@ static int _nfs4_proc_secinfo(struct inode *dir, const struct qstr *name, struct
|
|||||||
&res.seq_res, 0);
|
&res.seq_res, 0);
|
||||||
dprintk("NFS reply secinfo: %d\n", status);
|
dprintk("NFS reply secinfo: %d\n", status);
|
||||||
|
|
||||||
if (msg.rpc_cred)
|
if (cred)
|
||||||
put_rpccred(msg.rpc_cred);
|
put_rpccred(cred);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@ -7500,11 +7502,13 @@ _nfs41_proc_secinfo_no_name(struct nfs_server *server, struct nfs_fh *fhandle,
|
|||||||
.rpc_resp = &res,
|
.rpc_resp = &res,
|
||||||
};
|
};
|
||||||
struct rpc_clnt *clnt = server->client;
|
struct rpc_clnt *clnt = server->client;
|
||||||
|
struct rpc_cred *cred = NULL;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
if (use_integrity) {
|
if (use_integrity) {
|
||||||
clnt = server->nfs_client->cl_rpcclient;
|
clnt = server->nfs_client->cl_rpcclient;
|
||||||
msg.rpc_cred = nfs4_get_clid_cred(server->nfs_client);
|
cred = nfs4_get_clid_cred(server->nfs_client);
|
||||||
|
msg.rpc_cred = cred;
|
||||||
}
|
}
|
||||||
|
|
||||||
dprintk("--> %s\n", __func__);
|
dprintk("--> %s\n", __func__);
|
||||||
@ -7512,8 +7516,8 @@ _nfs41_proc_secinfo_no_name(struct nfs_server *server, struct nfs_fh *fhandle,
|
|||||||
&res.seq_res, 0);
|
&res.seq_res, 0);
|
||||||
dprintk("<-- %s status=%d\n", __func__, status);
|
dprintk("<-- %s status=%d\n", __func__, status);
|
||||||
|
|
||||||
if (msg.rpc_cred)
|
if (cred)
|
||||||
put_rpccred(msg.rpc_cred);
|
put_rpccred(cred);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user