Lines Matching refs:rsci
338 static void rsc_free(struct rsc *rsci) in rsc_free() argument
340 kfree(rsci->handle.data); in rsc_free()
341 if (rsci->mechctx) in rsc_free()
342 gss_delete_sec_context(&rsci->mechctx); in rsc_free()
343 free_svc_cred(&rsci->cred); in rsc_free()
348 struct rsc *rsci = container_of(ref, struct rsc, h.ref); in rsc_put() local
350 rsc_free(rsci); in rsc_put()
351 kfree(rsci); in rsc_put()
355 rsc_hash(struct rsc *rsci) in rsc_hash() argument
357 return hash_mem(rsci->handle.data, rsci->handle.len, RSC_HASHBITS); in rsc_hash()
400 struct rsc *rsci = kmalloc(sizeof(*rsci), GFP_KERNEL); in rsc_alloc() local
401 if (rsci) in rsc_alloc()
402 return &rsci->h; in rsc_alloc()
414 struct rsc rsci, *rscp = NULL; in rsc_parse() local
419 memset(&rsci, 0, sizeof(rsci)); in rsc_parse()
424 if (dup_to_netobj(&rsci.handle, buf, len)) in rsc_parse()
427 rsci.h.flags = 0; in rsc_parse()
434 rscp = rsc_lookup(cd, &rsci); in rsc_parse()
443 set_bit(CACHE_NEGATIVE, &rsci.h.flags); in rsc_parse()
456 rsci.cred.cr_uid = make_kuid(&init_user_ns, id); in rsc_parse()
461 rsci.cred.cr_gid = make_kgid(&init_user_ns, id); in rsc_parse()
469 rsci.cred.cr_group_info = groups_alloc(N); in rsc_parse()
470 if (rsci.cred.cr_group_info == NULL) in rsc_parse()
482 GROUP_AT(rsci.cred.cr_group_info, i) = kgid; in rsc_parse()
489 gm = rsci.cred.cr_gss_mech = gss_mech_get_by_name(buf); in rsc_parse()
499 status = gss_import_sec_context(buf, len, gm, &rsci.mechctx, in rsc_parse()
507 rsci.cred.cr_principal = kstrdup(buf, GFP_KERNEL); in rsc_parse()
508 if (!rsci.cred.cr_principal) { in rsc_parse()
515 rsci.h.expiry_time = expiry; in rsc_parse()
516 rscp = rsc_update(cd, &rsci, rscp); in rsc_parse()
519 rsc_free(&rsci); in rsc_parse()
568 struct rsc rsci; in gss_svc_searchbyctx() local
571 memset(&rsci, 0, sizeof(rsci)); in gss_svc_searchbyctx()
572 if (dup_to_netobj(&rsci.handle, handle->data, handle->len)) in gss_svc_searchbyctx()
574 found = rsc_lookup(cd, &rsci); in gss_svc_searchbyctx()
575 rsc_free(&rsci); in gss_svc_searchbyctx()
585 gss_check_seq_num(struct rsc *rsci, int seq_num) in gss_check_seq_num() argument
587 struct gss_svc_seq_data *sd = &rsci->seqdata; in gss_check_seq_num()
659 gss_verify_header(struct svc_rqst *rqstp, struct rsc *rsci, in gss_verify_header() argument
662 struct gss_ctx *ctx_id = rsci->mechctx; in gss_verify_header()
696 if (!gss_check_seq_num(rsci, gc->gc_seq)) { in gss_verify_header()
942 struct rsc *rsci; member
949 struct rsc *rsci = svcdata->rsci; in svcauth_gss_set_client() local
962 rqstp->rq_gssclient = find_gss_auth_domain(rsci->mechctx, gc->gc_svc); in svcauth_gss_set_client()
975 struct rsc *rsci; in gss_write_init_verf() local
980 rsci = gss_svc_searchbyctx(cd, out_handle); in gss_write_init_verf()
981 if (rsci == NULL) { in gss_write_init_verf()
985 rc = gss_write_verf(rqstp, rsci->mechctx, GSS_SEQ_WIN); in gss_write_init_verf()
986 cache_put(&rsci->h, cd); in gss_write_init_verf()
1144 struct rsc rsci, *rscp = NULL; in gss_proxy_save_rsc() local
1151 memset(&rsci, 0, sizeof(rsci)); in gss_proxy_save_rsc()
1162 if (dup_to_netobj(&rsci.handle, (char *)handle, sizeof(uint64_t))) in gss_proxy_save_rsc()
1164 rscp = rsc_lookup(cd, &rsci); in gss_proxy_save_rsc()
1177 rsci.cred = ud->creds; in gss_proxy_save_rsc()
1185 rsci.cred.cr_gss_mech = gm; in gss_proxy_save_rsc()
1191 gm, &rsci.mechctx, in gss_proxy_save_rsc()
1197 rsci.h.expiry_time = expiry; in gss_proxy_save_rsc()
1198 rscp = rsc_update(cd, &rsci, rscp); in gss_proxy_save_rsc()
1201 rsc_free(&rsci); in gss_proxy_save_rsc()
1404 struct rsc *rsci = NULL; in svcauth_gss_accept() local
1420 svcdata->rsci = NULL; in svcauth_gss_accept()
1462 rsci = gss_svc_searchbyctx(sn->rsc_cache, &gc->gc_ctx); in svcauth_gss_accept()
1463 if (!rsci) in svcauth_gss_accept()
1465 switch (gss_verify_header(rqstp, rsci, rpcstart, gc, authp)) { in svcauth_gss_accept()
1482 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq)) in svcauth_gss_accept()
1484 rsci->h.expiry_time = get_seconds(); in svcauth_gss_accept()
1485 set_bit(CACHE_NEGATIVE, &rsci->h.flags); in svcauth_gss_accept()
1493 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq)) in svcauth_gss_accept()
1495 rqstp->rq_cred = rsci->cred; in svcauth_gss_accept()
1496 get_group_info(rsci->cred.cr_group_info); in svcauth_gss_accept()
1506 gc->gc_seq, rsci->mechctx)) in svcauth_gss_accept()
1515 gc->gc_seq, rsci->mechctx)) in svcauth_gss_accept()
1522 svcdata->rsci = rsci; in svcauth_gss_accept()
1523 cache_get(&rsci->h); in svcauth_gss_accept()
1525 rsci->mechctx->mech_type, in svcauth_gss_accept()
1545 if (rsci) in svcauth_gss_accept()
1546 cache_put(&rsci->h, sn->rsc_cache); in svcauth_gss_accept()
1609 if (gss_get_mic(gsd->rsci->mechctx, &integ_buf, &mic)) in svcauth_gss_wrap_resp_integ()
1678 if (gss_wrap(gsd->rsci->mechctx, offset, resbuf, inpages)) in svcauth_gss_wrap_resp_priv()
1738 if (gsd->rsci) in svcauth_gss_release()
1739 cache_put(&gsd->rsci->h, sn->rsc_cache); in svcauth_gss_release()
1740 gsd->rsci = NULL; in svcauth_gss_release()