diff options
author | Mark Brown <broonie@linaro.org> | 2013-10-03 17:29:05 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-10-03 17:29:05 +0100 |
commit | 8e9c4aa4e7bd600d30e15ec82be9b670a1ec3da9 (patch) | |
tree | 3b19eb54c684e36feab568078018dea31c43a79f /net/sunrpc/auth_gss/auth_gss.c | |
parent | d60336e2f136287de821901d4a1b56179a0f7b69 (diff) | |
parent | 1d73ad298d1bfeee5d77c19e5cd667c551e30632 (diff) |
Merge remote-tracking branch 'asoc/fix/fsl' into asoc-fsl
Conflicts:
sound/soc/fsl/fsl_ssi.c
Diffstat (limited to 'net/sunrpc/auth_gss/auth_gss.c')
-rw-r--r-- | net/sunrpc/auth_gss/auth_gss.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c index fcac5d141717..084656671d6e 100644 --- a/net/sunrpc/auth_gss/auth_gss.c +++ b/net/sunrpc/auth_gss/auth_gss.c @@ -1075,6 +1075,15 @@ gss_destroy(struct rpc_auth *auth) kref_put(&gss_auth->kref, gss_free_callback); } +/* + * Auths may be shared between rpc clients that were cloned from a + * common client with the same xprt, if they also share the flavor and + * target_name. + * + * The auth is looked up from the oldest parent sharing the same + * cl_xprt, and the auth itself references only that common parent + * (which is guaranteed to last as long as any of its descendants). + */ static struct gss_auth * gss_auth_find_or_add_hashed(struct rpc_auth_create_args *args, struct rpc_clnt *clnt, @@ -1088,6 +1097,8 @@ gss_auth_find_or_add_hashed(struct rpc_auth_create_args *args, gss_auth, hash, hashval) { + if (gss_auth->client != clnt) + continue; if (gss_auth->rpc_auth.au_flavor != args->pseudoflavor) continue; if (gss_auth->target_name != args->target_name) { |