Lines Matching refs:gss_auth
84 struct gss_auth { struct
107 static void gss_put_auth(struct gss_auth *gss_auth); argument
265 struct gss_auth *auth;
315 __gss_find_upcall(struct rpc_pipe *pipe, kuid_t uid, const struct gss_auth *auth) in __gss_find_upcall()
523 gss_alloc_msg(struct gss_auth *gss_auth, in gss_alloc_msg() argument
533 vers = get_pipe_version(gss_auth->net); in gss_alloc_msg()
537 gss_msg->pipe = gss_auth->gss_pipe[vers]->pipe; in gss_alloc_msg()
543 gss_msg->auth = gss_auth; in gss_alloc_msg()
544 kref_get(&gss_auth->kref); in gss_alloc_msg()
554 put_pipe_version(gss_auth->net); in gss_alloc_msg()
562 gss_setup_upcall(struct gss_auth *gss_auth, struct rpc_cred *cred) in gss_setup_upcall() argument
569 gss_new = gss_alloc_msg(gss_auth, uid, gss_cred->gc_principal); in gss_setup_upcall()
597 struct gss_auth *gss_auth = container_of(cred->cr_auth, in gss_refresh_upcall() local
598 struct gss_auth, rpc_auth); in gss_refresh_upcall()
605 gss_msg = gss_setup_upcall(gss_auth, cred); in gss_refresh_upcall()
641 gss_create_upcall(struct gss_auth *gss_auth, struct gss_cred *gss_cred) in gss_create_upcall() argument
643 struct net *net = gss_auth->net; in gss_create_upcall()
659 gss_msg = gss_setup_upcall(gss_auth, cred); in gss_create_upcall()
1027 static struct gss_auth *
1031 struct gss_auth *gss_auth; in gss_create_new() local
1038 if (!(gss_auth = kmalloc(sizeof(*gss_auth), GFP_KERNEL))) in gss_create_new()
1040 INIT_HLIST_NODE(&gss_auth->hash); in gss_create_new()
1041 gss_auth->target_name = NULL; in gss_create_new()
1043 gss_auth->target_name = kstrdup(args->target_name, GFP_KERNEL); in gss_create_new()
1044 if (gss_auth->target_name == NULL) in gss_create_new()
1047 gss_auth->client = clnt; in gss_create_new()
1048 gss_auth->net = get_net_track(rpc_net_ns(clnt), &gss_auth->ns_tracker, in gss_create_new()
1051 gss_auth->mech = gss_mech_get_by_pseudoflavor(flavor); in gss_create_new()
1052 if (!gss_auth->mech) in gss_create_new()
1054 gss_auth->service = gss_pseudoflavor_to_service(gss_auth->mech, flavor); in gss_create_new()
1055 if (gss_auth->service == 0) in gss_create_new()
1057 if (!gssd_running(gss_auth->net)) in gss_create_new()
1059 auth = &gss_auth->rpc_auth; in gss_create_new()
1068 if (gss_pseudoflavor_to_datatouch(gss_auth->mech, flavor)) in gss_create_new()
1071 kref_init(&gss_auth->kref); in gss_create_new()
1087 gss_auth->gss_pipe[1] = gss_pipe; in gss_create_new()
1089 gss_pipe = gss_pipe_get(clnt, gss_auth->mech->gm_name, in gss_create_new()
1095 gss_auth->gss_pipe[0] = gss_pipe; in gss_create_new()
1097 return gss_auth; in gss_create_new()
1099 gss_pipe_free(gss_auth->gss_pipe[1]); in gss_create_new()
1103 gss_mech_put(gss_auth->mech); in gss_create_new()
1105 put_net_track(gss_auth->net, &gss_auth->ns_tracker); in gss_create_new()
1107 kfree(gss_auth->target_name); in gss_create_new()
1108 kfree(gss_auth); in gss_create_new()
1116 gss_free(struct gss_auth *gss_auth) in gss_free() argument
1118 gss_pipe_free(gss_auth->gss_pipe[0]); in gss_free()
1119 gss_pipe_free(gss_auth->gss_pipe[1]); in gss_free()
1120 gss_mech_put(gss_auth->mech); in gss_free()
1121 put_net_track(gss_auth->net, &gss_auth->ns_tracker); in gss_free()
1122 kfree(gss_auth->target_name); in gss_free()
1124 kfree(gss_auth); in gss_free()
1131 struct gss_auth *gss_auth = container_of(kref, struct gss_auth, kref); in gss_free_callback() local
1133 gss_free(gss_auth); in gss_free_callback()
1137 gss_put_auth(struct gss_auth *gss_auth) in gss_put_auth() argument
1139 kref_put(&gss_auth->kref, gss_free_callback); in gss_put_auth()
1145 struct gss_auth *gss_auth = container_of(auth, in gss_destroy() local
1146 struct gss_auth, rpc_auth); in gss_destroy()
1148 if (hash_hashed(&gss_auth->hash)) { in gss_destroy()
1150 hash_del(&gss_auth->hash); in gss_destroy()
1154 gss_pipe_free(gss_auth->gss_pipe[0]); in gss_destroy()
1155 gss_auth->gss_pipe[0] = NULL; in gss_destroy()
1156 gss_pipe_free(gss_auth->gss_pipe[1]); in gss_destroy()
1157 gss_auth->gss_pipe[1] = NULL; in gss_destroy()
1160 gss_put_auth(gss_auth); in gss_destroy()
1172 static struct gss_auth *
1175 struct gss_auth *new) in gss_auth_find_or_add_hashed()
1177 struct gss_auth *gss_auth; in gss_auth_find_or_add_hashed() local
1182 gss_auth, in gss_auth_find_or_add_hashed()
1185 if (gss_auth->client != clnt) in gss_auth_find_or_add_hashed()
1187 if (gss_auth->rpc_auth.au_flavor != args->pseudoflavor) in gss_auth_find_or_add_hashed()
1189 if (gss_auth->target_name != args->target_name) { in gss_auth_find_or_add_hashed()
1190 if (gss_auth->target_name == NULL) in gss_auth_find_or_add_hashed()
1194 if (strcmp(gss_auth->target_name, args->target_name)) in gss_auth_find_or_add_hashed()
1197 if (!refcount_inc_not_zero(&gss_auth->rpc_auth.au_count)) in gss_auth_find_or_add_hashed()
1203 gss_auth = new; in gss_auth_find_or_add_hashed()
1206 return gss_auth; in gss_auth_find_or_add_hashed()
1209 static struct gss_auth *
1213 struct gss_auth *gss_auth; in gss_create_hashed() local
1214 struct gss_auth *new; in gss_create_hashed()
1216 gss_auth = gss_auth_find_or_add_hashed(args, clnt, NULL); in gss_create_hashed()
1217 if (gss_auth != NULL) in gss_create_hashed()
1222 gss_auth = gss_auth_find_or_add_hashed(args, clnt, new); in gss_create_hashed()
1223 if (gss_auth != new) in gss_create_hashed()
1226 return gss_auth; in gss_create_hashed()
1232 struct gss_auth *gss_auth; in gss_create() local
1243 gss_auth = gss_create_hashed(args, clnt); in gss_create()
1244 if (IS_ERR(gss_auth)) in gss_create()
1245 return ERR_CAST(gss_auth); in gss_create()
1246 return &gss_auth->rpc_auth; in gss_create()
1250 gss_dup_cred(struct gss_auth *gss_auth, struct gss_cred *gss_cred) in gss_dup_cred() argument
1264 &gss_auth->rpc_auth, in gss_dup_cred()
1269 kref_get(&gss_auth->kref); in gss_dup_cred()
1286 struct gss_auth *gss_auth = container_of(cred->cr_auth, struct gss_auth, rpc_auth); in gss_send_destroy_context() local
1291 new = gss_dup_cred(gss_auth, gss_cred); in gss_send_destroy_context()
1296 task = rpc_call_null(gss_auth->client, &new->gc_base, in gss_send_destroy_context()
1347 struct gss_auth *gss_auth = container_of(cred->cr_auth, struct gss_auth, rpc_auth); in gss_destroy_nullcred() local
1355 gss_put_auth(gss_auth); in gss_destroy_nullcred()
1385 struct gss_auth *gss_auth = container_of(auth, struct gss_auth, rpc_auth); in gss_create_cred() local
1398 cred->gc_service = gss_auth->service; in gss_create_cred()
1400 kref_get(&gss_auth->kref); in gss_create_cred()
1410 struct gss_auth *gss_auth = container_of(auth, struct gss_auth, rpc_auth); in gss_cred_init() local
1415 err = gss_create_upcall(gss_auth, gss_cred); in gss_cred_init()