Lines Matching refs:rsci

75 	struct rsc			*rsci;
380 static void rsc_free(struct rsc *rsci)
382 kfree(rsci->handle.data);
383 if (rsci->mechctx)
384 gss_delete_sec_context(&rsci->mechctx);
385 free_svc_cred(&rsci->cred);
390 struct rsc *rsci = container_of(head, struct rsc, rcu_head);
392 kfree(rsci->handle.data);
393 kfree(rsci);
398 struct rsc *rsci = container_of(ref, struct rsc, h.ref);
400 if (rsci->mechctx)
401 gss_delete_sec_context(&rsci->mechctx);
402 free_svc_cred(&rsci->cred);
403 call_rcu(&rsci->rcu_head, rsc_free_rcu);
407 rsc_hash(struct rsc *rsci)
409 return hash_mem(rsci->handle.data, rsci->handle.len, RSC_HASHBITS);
452 struct rsc *rsci = kmalloc(sizeof(*rsci), GFP_KERNEL);
453 if (rsci)
454 return &rsci->h;
471 struct rsc rsci, *rscp = NULL;
476 memset(&rsci, 0, sizeof(rsci));
481 if (dup_to_netobj(&rsci.handle, buf, len))
484 rsci.h.flags = 0;
491 rscp = rsc_lookup(cd, &rsci);
500 set_bit(CACHE_NEGATIVE, &rsci.h.flags);
513 rsci.cred.cr_uid = make_kuid(current_user_ns(), id);
518 rsci.cred.cr_gid = make_kgid(current_user_ns(), id);
526 rsci.cred.cr_group_info = groups_alloc(N);
527 if (rsci.cred.cr_group_info == NULL)
539 rsci.cred.cr_group_info->gid[i] = kgid;
541 groups_sort(rsci.cred.cr_group_info);
547 gm = rsci.cred.cr_gss_mech = gss_mech_get_by_name(buf);
557 status = gss_import_sec_context(buf, len, gm, &rsci.mechctx,
565 rsci.cred.cr_principal = kstrdup(buf, GFP_KERNEL);
566 if (!rsci.cred.cr_principal) {
573 rsci.h.expiry_time = expiry;
574 rscp = rsc_update(cd, &rsci, rscp);
577 rsc_free(&rsci);
627 struct rsc rsci;
630 memset(&rsci, 0, sizeof(rsci));
631 if (dup_to_netobj(&rsci.handle, handle->data, handle->len))
633 found = rsc_lookup(cd, &rsci);
634 rsc_free(&rsci);
645 * @rsci: cached GSS context state (updated on return)
655 static bool gss_check_seq_num(const struct svc_rqst *rqstp, struct rsc *rsci,
658 struct gss_svc_seq_data *sd = &rsci->seqdata;
702 svcauth_gss_verify_header(struct svc_rqst *rqstp, struct rsc *rsci,
706 struct gss_ctx *ctx_id = rsci->mechctx;
746 if (!gss_check_seq_num(rqstp, rsci, gc->gc_seq))
983 struct rsc *rsci = svcdata->rsci;
998 rqstp->rq_gssclient = find_gss_auth_domain(rsci->mechctx, gc->gc_svc);
1015 struct rsc *rsci;
1020 rsci = gss_svc_searchbyctx(cd, out_handle);
1021 if (rsci == NULL) {
1026 rc = svcauth_gss_encode_verf(rqstp, rsci->mechctx, seq_num);
1027 cache_put(&rsci->h, cd);
1222 struct rsc rsci, *rscp = NULL;
1229 memset(&rsci, 0, sizeof(rsci));
1240 if (dup_to_netobj(&rsci.handle, (char *)handle, sizeof(uint64_t)))
1242 rscp = rsc_lookup(cd, &rsci);
1255 rsci.cred = ud->creds;
1263 rsci.cred.cr_gss_mech = gm;
1269 gm, &rsci.mechctx,
1278 rsci.h.expiry_time = expiry;
1279 rscp = rsc_update(cd, &rsci, rscp);
1282 rsc_free(&rsci);
1627 struct rsc *rsci = NULL;
1638 svcdata->rsci = NULL;
1658 rsci = gss_svc_searchbyctx(sn->rsc_cache, &gc->gc_ctx);
1659 if (!rsci)
1661 switch (svcauth_gss_verify_header(rqstp, rsci, rpcstart, gc)) {
1680 if (!svcauth_gss_encode_verf(rqstp, rsci->mechctx, gc->gc_seq))
1685 sunrpc_cache_unhash(sn->rsc_cache, &rsci->h);
1689 if (!svcauth_gss_encode_verf(rqstp, rsci->mechctx, gc->gc_seq))
1694 rqstp->rq_cred = rsci->cred;
1695 get_group_info(rsci->cred.cr_group_info);
1704 rsci->mechctx))
1712 rsci->mechctx))
1719 svcdata->rsci = rsci;
1720 cache_get(&rsci->h);
1722 rsci->mechctx->mech_type,
1742 if (rsci)
1743 cache_put(&rsci->h, sn->rsc_cache);
1809 maj_stat = gss_get_mic(gsd->rsci->mechctx, &databody_integ, &checksum);
1901 maj_stat = gss_wrap(gsd->rsci->mechctx, offset + XDR_UNIT, buf,
1978 if (gsd && gsd->rsci) {
1979 cache_put(&gsd->rsci->h, sn->rsc_cache);
1980 gsd->rsci = NULL;