|
@@ -769,7 +769,14 @@ void cleanup_callback_cred(void)
|
|
static struct rpc_cred *get_backchannel_cred(struct nfs4_client *clp, struct rpc_clnt *client, struct nfsd4_session *ses)
|
|
static struct rpc_cred *get_backchannel_cred(struct nfs4_client *clp, struct rpc_clnt *client, struct nfsd4_session *ses)
|
|
{
|
|
{
|
|
if (clp->cl_minorversion == 0) {
|
|
if (clp->cl_minorversion == 0) {
|
|
- return get_rpccred(callback_cred);
|
|
|
|
|
|
+ char *principal = clp->cl_cred.cr_targ_princ ?
|
|
|
|
+ clp->cl_cred.cr_targ_princ : "nfs";
|
|
|
|
+ struct rpc_cred *cred;
|
|
|
|
+
|
|
|
|
+ cred = rpc_lookup_machine_cred(principal);
|
|
|
|
+ if (!IS_ERR(cred))
|
|
|
|
+ get_rpccred(cred);
|
|
|
|
+ return cred;
|
|
} else {
|
|
} else {
|
|
struct rpc_auth *auth = client->cl_auth;
|
|
struct rpc_auth *auth = client->cl_auth;
|
|
struct auth_cred acred = {};
|
|
struct auth_cred acred = {};
|