File tree Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Expand file tree Collapse file tree 1 file changed +11
-0
lines changed Original file line number Diff line number Diff line change @@ -1075,6 +1075,15 @@ gss_destroy(struct rpc_auth *auth)
1075
1075
kref_put (& gss_auth -> kref , gss_free_callback );
1076
1076
}
1077
1077
1078
+ /*
1079
+ * Auths may be shared between rpc clients that were cloned from a
1080
+ * common client with the same xprt, if they also share the flavor and
1081
+ * target_name.
1082
+ *
1083
+ * The auth is looked up from the oldest parent sharing the same
1084
+ * cl_xprt, and the auth itself references only that common parent
1085
+ * (which is guaranteed to last as long as any of its descendants).
1086
+ */
1078
1087
static struct gss_auth *
1079
1088
gss_auth_find_or_add_hashed (struct rpc_auth_create_args * args ,
1080
1089
struct rpc_clnt * clnt ,
@@ -1088,6 +1097,8 @@ gss_auth_find_or_add_hashed(struct rpc_auth_create_args *args,
1088
1097
gss_auth ,
1089
1098
hash ,
1090
1099
hashval ) {
1100
+ if (gss_auth -> client != clnt )
1101
+ continue ;
1091
1102
if (gss_auth -> rpc_auth .au_flavor != args -> pseudoflavor )
1092
1103
continue ;
1093
1104
if (gss_auth -> target_name != args -> target_name ) {
You can’t perform that action at this time.
0 commit comments