Lines Matching refs:rsci
356 static void rsc_free(struct rsc *rsci) in rsc_free() argument
358 kfree(rsci->handle.data); in rsc_free()
359 if (rsci->mechctx) in rsc_free()
360 gss_delete_sec_context(&rsci->mechctx); in rsc_free()
361 free_svc_cred(&rsci->cred); in rsc_free()
366 struct rsc *rsci = container_of(head, struct rsc, rcu_head); in rsc_free_rcu() local
368 kfree(rsci->handle.data); in rsc_free_rcu()
369 kfree(rsci); in rsc_free_rcu()
374 struct rsc *rsci = container_of(ref, struct rsc, h.ref); in rsc_put() local
376 if (rsci->mechctx) in rsc_put()
377 gss_delete_sec_context(&rsci->mechctx); in rsc_put()
378 free_svc_cred(&rsci->cred); in rsc_put()
379 call_rcu(&rsci->rcu_head, rsc_free_rcu); in rsc_put()
383 rsc_hash(struct rsc *rsci) in rsc_hash() argument
385 return hash_mem(rsci->handle.data, rsci->handle.len, RSC_HASHBITS); in rsc_hash()
428 struct rsc *rsci = kmalloc(sizeof(*rsci), GFP_KERNEL); in rsc_alloc() local
429 if (rsci) in rsc_alloc()
430 return &rsci->h; in rsc_alloc()
447 struct rsc rsci, *rscp = NULL; in rsc_parse() local
452 memset(&rsci, 0, sizeof(rsci)); in rsc_parse()
457 if (dup_to_netobj(&rsci.handle, buf, len)) in rsc_parse()
460 rsci.h.flags = 0; in rsc_parse()
467 rscp = rsc_lookup(cd, &rsci); in rsc_parse()
476 set_bit(CACHE_NEGATIVE, &rsci.h.flags); in rsc_parse()
489 rsci.cred.cr_uid = make_kuid(current_user_ns(), id); in rsc_parse()
494 rsci.cred.cr_gid = make_kgid(current_user_ns(), id); in rsc_parse()
502 rsci.cred.cr_group_info = groups_alloc(N); in rsc_parse()
503 if (rsci.cred.cr_group_info == NULL) in rsc_parse()
515 rsci.cred.cr_group_info->gid[i] = kgid; in rsc_parse()
517 groups_sort(rsci.cred.cr_group_info); in rsc_parse()
523 gm = rsci.cred.cr_gss_mech = gss_mech_get_by_name(buf); in rsc_parse()
533 status = gss_import_sec_context(buf, len, gm, &rsci.mechctx, in rsc_parse()
541 rsci.cred.cr_principal = kstrdup(buf, GFP_KERNEL); in rsc_parse()
542 if (!rsci.cred.cr_principal) { in rsc_parse()
549 rsci.h.expiry_time = expiry; in rsc_parse()
550 rscp = rsc_update(cd, &rsci, rscp); in rsc_parse()
553 rsc_free(&rsci); in rsc_parse()
603 struct rsc rsci; in gss_svc_searchbyctx() local
606 memset(&rsci, 0, sizeof(rsci)); in gss_svc_searchbyctx()
607 if (dup_to_netobj(&rsci.handle, handle->data, handle->len)) in gss_svc_searchbyctx()
609 found = rsc_lookup(cd, &rsci); in gss_svc_searchbyctx()
610 rsc_free(&rsci); in gss_svc_searchbyctx()
631 static bool gss_check_seq_num(const struct svc_rqst *rqstp, struct rsc *rsci, in gss_check_seq_num() argument
634 struct gss_svc_seq_data *sd = &rsci->seqdata; in gss_check_seq_num()
715 gss_verify_header(struct svc_rqst *rqstp, struct rsc *rsci, in gss_verify_header() argument
718 struct gss_ctx *ctx_id = rsci->mechctx; in gss_verify_header()
751 if (!gss_check_seq_num(rqstp, rsci, gc->gc_seq)) in gss_verify_header()
1032 struct rsc *rsci; member
1039 struct rsc *rsci = svcdata->rsci; in svcauth_gss_set_client() local
1054 rqstp->rq_gssclient = find_gss_auth_domain(rsci->mechctx, gc->gc_svc); in svcauth_gss_set_client()
1069 struct rsc *rsci; in gss_write_init_verf() local
1074 rsci = gss_svc_searchbyctx(cd, out_handle); in gss_write_init_verf()
1075 if (rsci == NULL) { in gss_write_init_verf()
1079 rc = gss_write_verf(rqstp, rsci->mechctx, GSS_SEQ_WIN); in gss_write_init_verf()
1080 cache_put(&rsci->h, cd); in gss_write_init_verf()
1284 struct rsc rsci, *rscp = NULL; in gss_proxy_save_rsc() local
1291 memset(&rsci, 0, sizeof(rsci)); in gss_proxy_save_rsc()
1302 if (dup_to_netobj(&rsci.handle, (char *)handle, sizeof(uint64_t))) in gss_proxy_save_rsc()
1304 rscp = rsc_lookup(cd, &rsci); in gss_proxy_save_rsc()
1317 rsci.cred = ud->creds; in gss_proxy_save_rsc()
1325 rsci.cred.cr_gss_mech = gm; in gss_proxy_save_rsc()
1331 gm, &rsci.mechctx, in gss_proxy_save_rsc()
1340 rsci.h.expiry_time = expiry; in gss_proxy_save_rsc()
1341 rscp = rsc_update(cd, &rsci, rscp); in gss_proxy_save_rsc()
1344 rsc_free(&rsci); in gss_proxy_save_rsc()
1545 struct rsc *rsci = NULL; in svcauth_gss_accept() local
1558 svcdata->rsci = NULL; in svcauth_gss_accept()
1600 rsci = gss_svc_searchbyctx(sn->rsc_cache, &gc->gc_ctx); in svcauth_gss_accept()
1601 if (!rsci) in svcauth_gss_accept()
1603 switch (gss_verify_header(rqstp, rsci, rpcstart, gc)) { in svcauth_gss_accept()
1620 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq)) in svcauth_gss_accept()
1623 sunrpc_cache_unhash(sn->rsc_cache, &rsci->h); in svcauth_gss_accept()
1631 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq)) in svcauth_gss_accept()
1633 rqstp->rq_cred = rsci->cred; in svcauth_gss_accept()
1634 get_group_info(rsci->cred.cr_group_info); in svcauth_gss_accept()
1644 gc->gc_seq, rsci->mechctx)) in svcauth_gss_accept()
1653 gc->gc_seq, rsci->mechctx)) in svcauth_gss_accept()
1660 svcdata->rsci = rsci; in svcauth_gss_accept()
1661 cache_get(&rsci->h); in svcauth_gss_accept()
1663 rsci->mechctx->mech_type, in svcauth_gss_accept()
1684 if (rsci) in svcauth_gss_accept()
1685 cache_put(&rsci->h, sn->rsc_cache); in svcauth_gss_accept()
1751 if (gss_get_mic(gsd->rsci->mechctx, &integ_buf, &mic)) in svcauth_gss_wrap_resp_integ()
1823 if (gss_wrap(gsd->rsci->mechctx, offset, resbuf, inpages)) in svcauth_gss_wrap_resp_priv()
1886 if (gsd && gsd->rsci) { in svcauth_gss_release()
1887 cache_put(&gsd->rsci->h, sn->rsc_cache); in svcauth_gss_release()
1888 gsd->rsci = NULL; in svcauth_gss_release()