Lines Matching refs:rsci
354 static void rsc_free(struct rsc *rsci) in rsc_free() argument
356 kfree(rsci->handle.data); in rsc_free()
357 if (rsci->mechctx) in rsc_free()
358 gss_delete_sec_context(&rsci->mechctx); in rsc_free()
359 free_svc_cred(&rsci->cred); in rsc_free()
364 struct rsc *rsci = container_of(head, struct rsc, rcu_head); in rsc_free_rcu() local
366 kfree(rsci->handle.data); in rsc_free_rcu()
367 kfree(rsci); in rsc_free_rcu()
372 struct rsc *rsci = container_of(ref, struct rsc, h.ref); in rsc_put() local
374 if (rsci->mechctx) in rsc_put()
375 gss_delete_sec_context(&rsci->mechctx); in rsc_put()
376 free_svc_cred(&rsci->cred); in rsc_put()
377 call_rcu(&rsci->rcu_head, rsc_free_rcu); in rsc_put()
381 rsc_hash(struct rsc *rsci) in rsc_hash() argument
383 return hash_mem(rsci->handle.data, rsci->handle.len, RSC_HASHBITS); in rsc_hash()
426 struct rsc *rsci = kmalloc(sizeof(*rsci), GFP_KERNEL); in rsc_alloc() local
427 if (rsci) in rsc_alloc()
428 return &rsci->h; in rsc_alloc()
445 struct rsc rsci, *rscp = NULL; in rsc_parse() local
450 memset(&rsci, 0, sizeof(rsci)); in rsc_parse()
455 if (dup_to_netobj(&rsci.handle, buf, len)) in rsc_parse()
458 rsci.h.flags = 0; in rsc_parse()
465 rscp = rsc_lookup(cd, &rsci); in rsc_parse()
474 set_bit(CACHE_NEGATIVE, &rsci.h.flags); in rsc_parse()
487 rsci.cred.cr_uid = make_kuid(current_user_ns(), id); in rsc_parse()
492 rsci.cred.cr_gid = make_kgid(current_user_ns(), id); in rsc_parse()
500 rsci.cred.cr_group_info = groups_alloc(N); in rsc_parse()
501 if (rsci.cred.cr_group_info == NULL) in rsc_parse()
513 rsci.cred.cr_group_info->gid[i] = kgid; in rsc_parse()
515 groups_sort(rsci.cred.cr_group_info); in rsc_parse()
521 gm = rsci.cred.cr_gss_mech = gss_mech_get_by_name(buf); in rsc_parse()
531 status = gss_import_sec_context(buf, len, gm, &rsci.mechctx, in rsc_parse()
539 rsci.cred.cr_principal = kstrdup(buf, GFP_KERNEL); in rsc_parse()
540 if (!rsci.cred.cr_principal) { in rsc_parse()
547 rsci.h.expiry_time = expiry; in rsc_parse()
548 rscp = rsc_update(cd, &rsci, rscp); in rsc_parse()
551 rsc_free(&rsci); in rsc_parse()
601 struct rsc rsci; in gss_svc_searchbyctx() local
604 memset(&rsci, 0, sizeof(rsci)); in gss_svc_searchbyctx()
605 if (dup_to_netobj(&rsci.handle, handle->data, handle->len)) in gss_svc_searchbyctx()
607 found = rsc_lookup(cd, &rsci); in gss_svc_searchbyctx()
608 rsc_free(&rsci); in gss_svc_searchbyctx()
629 static bool gss_check_seq_num(const struct svc_rqst *rqstp, struct rsc *rsci, in gss_check_seq_num() argument
632 struct gss_svc_seq_data *sd = &rsci->seqdata; in gss_check_seq_num()
713 gss_verify_header(struct svc_rqst *rqstp, struct rsc *rsci, in gss_verify_header() argument
716 struct gss_ctx *ctx_id = rsci->mechctx; in gss_verify_header()
749 if (!gss_check_seq_num(rqstp, rsci, gc->gc_seq)) in gss_verify_header()
1030 struct rsc *rsci; member
1037 struct rsc *rsci = svcdata->rsci; in svcauth_gss_set_client() local
1050 rqstp->rq_gssclient = find_gss_auth_domain(rsci->mechctx, gc->gc_svc); in svcauth_gss_set_client()
1063 struct rsc *rsci; in gss_write_init_verf() local
1068 rsci = gss_svc_searchbyctx(cd, out_handle); in gss_write_init_verf()
1069 if (rsci == NULL) { in gss_write_init_verf()
1073 rc = gss_write_verf(rqstp, rsci->mechctx, GSS_SEQ_WIN); in gss_write_init_verf()
1074 cache_put(&rsci->h, cd); in gss_write_init_verf()
1273 struct rsc rsci, *rscp = NULL; in gss_proxy_save_rsc() local
1280 memset(&rsci, 0, sizeof(rsci)); in gss_proxy_save_rsc()
1291 if (dup_to_netobj(&rsci.handle, (char *)handle, sizeof(uint64_t))) in gss_proxy_save_rsc()
1293 rscp = rsc_lookup(cd, &rsci); in gss_proxy_save_rsc()
1306 rsci.cred = ud->creds; in gss_proxy_save_rsc()
1314 rsci.cred.cr_gss_mech = gm; in gss_proxy_save_rsc()
1320 gm, &rsci.mechctx, in gss_proxy_save_rsc()
1329 rsci.h.expiry_time = expiry; in gss_proxy_save_rsc()
1330 rscp = rsc_update(cd, &rsci, rscp); in gss_proxy_save_rsc()
1333 rsc_free(&rsci); in gss_proxy_save_rsc()
1535 struct rsc *rsci = NULL; in svcauth_gss_accept() local
1548 svcdata->rsci = NULL; in svcauth_gss_accept()
1590 rsci = gss_svc_searchbyctx(sn->rsc_cache, &gc->gc_ctx); in svcauth_gss_accept()
1591 if (!rsci) in svcauth_gss_accept()
1593 switch (gss_verify_header(rqstp, rsci, rpcstart, gc, authp)) { in svcauth_gss_accept()
1610 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq)) in svcauth_gss_accept()
1613 sunrpc_cache_unhash(sn->rsc_cache, &rsci->h); in svcauth_gss_accept()
1621 if (gss_write_verf(rqstp, rsci->mechctx, gc->gc_seq)) in svcauth_gss_accept()
1623 rqstp->rq_cred = rsci->cred; in svcauth_gss_accept()
1624 get_group_info(rsci->cred.cr_group_info); in svcauth_gss_accept()
1634 gc->gc_seq, rsci->mechctx)) in svcauth_gss_accept()
1643 gc->gc_seq, rsci->mechctx)) in svcauth_gss_accept()
1650 svcdata->rsci = rsci; in svcauth_gss_accept()
1651 cache_get(&rsci->h); in svcauth_gss_accept()
1653 rsci->mechctx->mech_type, in svcauth_gss_accept()
1674 if (rsci) in svcauth_gss_accept()
1675 cache_put(&rsci->h, sn->rsc_cache); in svcauth_gss_accept()
1741 if (gss_get_mic(gsd->rsci->mechctx, &integ_buf, &mic)) in svcauth_gss_wrap_resp_integ()
1813 if (gss_wrap(gsd->rsci->mechctx, offset, resbuf, inpages)) in svcauth_gss_wrap_resp_priv()
1876 if (gsd && gsd->rsci) { in svcauth_gss_release()
1877 cache_put(&gsd->rsci->h, sn->rsc_cache); in svcauth_gss_release()
1878 gsd->rsci = NULL; in svcauth_gss_release()