Lines Matching refs:cr

251 	cred_t *cr = kmem_cache_alloc(cred_cache, flgs);  in cralloc_flags()  local
253 if (cr == NULL) in cralloc_flags()
256 cr->cr_ref = 1; /* So we can crfree() */ in cralloc_flags()
257 cr->cr_zone = NULL; in cralloc_flags()
258 cr->cr_label = NULL; in cralloc_flags()
259 cr->cr_ksid = NULL; in cralloc_flags()
260 cr->cr_klpd = NULL; in cralloc_flags()
261 cr->cr_grps = NULL; in cralloc_flags()
262 return (cr); in cralloc_flags()
277 cred_t *cr = cralloc(); in cralloc_ksid() local
279 cr->cr_ksid = kcrsid_alloc(); in cralloc_ksid()
280 return (cr); in cralloc_ksid()
290 cred_t *cr = kmem_cache_alloc(cred_cache, KM_SLEEP); in crget() local
292 bcopy(zone_kcred(), cr, crsize); in crget()
293 cr->cr_ref = 1; in crget()
294 zone_cred_hold(cr->cr_zone); in crget()
295 if (cr->cr_label) in crget()
296 label_hold(cr->cr_label); in crget()
297 ASSERT(cr->cr_klpd == NULL); in crget()
298 ASSERT(cr->cr_grps == NULL); in crget()
299 return (cr); in crget()
314 crset(proc_t *p, cred_t *cr) in crset() argument
328 t->t_cred = cr; /* the cred is held by caller for this thread */ in crset()
347 crhold(cred_t *cr) in crhold() argument
349 ASSERT(cr->cr_ref != 0xdeadbeef && cr->cr_ref != 0); in crhold()
350 atomic_inc_32(&cr->cr_ref); in crhold()
358 crfree(cred_t *cr) in crfree() argument
360 ASSERT(cr->cr_ref != 0xdeadbeef && cr->cr_ref != 0); in crfree()
361 if (atomic_dec_32_nv(&cr->cr_ref) == 0) { in crfree()
362 ASSERT(cr != kcred); in crfree()
363 if (cr->cr_label) in crfree()
364 label_rele(cr->cr_label); in crfree()
365 if (cr->cr_klpd) in crfree()
366 crklpd_rele(cr->cr_klpd); in crfree()
367 if (cr->cr_zone) in crfree()
368 zone_cred_rele(cr->cr_zone); in crfree()
369 if (cr->cr_ksid) in crfree()
370 kcrsid_rele(cr->cr_ksid); in crfree()
371 if (cr->cr_grps) in crfree()
372 crgrprele(cr->cr_grps); in crfree()
374 kmem_cache_free(cred_cache, cr); in crfree()
384 crcopy(cred_t *cr) in crcopy() argument
389 bcopy(cr, newcr, crsize); in crcopy()
400 crfree(cr); in crcopy()
440 crdup_flags(const cred_t *cr, int flgs) in crdup_flags() argument
449 bcopy(cr, newcr, crsize); in crdup_flags()
465 crdup(cred_t *cr) in crdup() argument
467 return (crdup_flags(cr, KM_SLEEP)); in crdup()
504 cred_t *cr; in crgetcred() local
509 crhold(cr = p->p_cred); in crgetcred()
511 return (cr); in crgetcred()
520 suser(cred_t *cr) in suser() argument
522 return (PRIV_POLICY(cr, PRIV_SYS_SUSER_COMPAT, B_FALSE, EPERM, NULL) in suser()
531 groupmember(gid_t gid, const cred_t *cr) in groupmember() argument
533 if (gid == cr->cr_gid) in groupmember()
535 return (supgroupmember(gid, cr)); in groupmember()
542 supgroupmember(gid_t gid, const cred_t *cr) in supgroupmember() argument
545 credgrp_t *grps = cr->cr_grps; in supgroupmember()
678 crgetuid(const cred_t *cr) in crgetuid() argument
680 return (cr->cr_uid); in crgetuid()
684 crgetruid(const cred_t *cr) in crgetruid() argument
686 return (cr->cr_ruid); in crgetruid()
690 crgetsuid(const cred_t *cr) in crgetsuid() argument
692 return (cr->cr_suid); in crgetsuid()
696 crgetgid(const cred_t *cr) in crgetgid() argument
698 return (cr->cr_gid); in crgetgid()
702 crgetrgid(const cred_t *cr) in crgetrgid() argument
704 return (cr->cr_rgid); in crgetrgid()
708 crgetsgid(const cred_t *cr) in crgetsgid() argument
710 return (cr->cr_sgid); in crgetsgid()
714 crgetauinfo(const cred_t *cr) in crgetauinfo() argument
716 return ((const auditinfo_addr_t *)CR_AUINFO(cr)); in crgetauinfo()
720 crgetauinfo_modifiable(cred_t *cr) in crgetauinfo_modifiable() argument
722 return (CR_AUINFO(cr)); in crgetauinfo_modifiable()
726 crgetzoneid(const cred_t *cr) in crgetzoneid() argument
728 return (cr->cr_zone == NULL ? in crgetzoneid()
729 (cr->cr_uid == -1 ? (zoneid_t)-1 : GLOBAL_ZONEID) : in crgetzoneid()
730 cr->cr_zone->zone_id); in crgetzoneid()
734 crgetprojid(const cred_t *cr) in crgetprojid() argument
736 return (cr->cr_projid); in crgetprojid()
740 crgetzone(const cred_t *cr) in crgetzone() argument
742 return (cr->cr_zone); in crgetzone()
746 crgetlabel(const cred_t *cr) in crgetlabel() argument
748 return (cr->cr_label ? in crgetlabel()
749 cr->cr_label : in crgetlabel()
750 (cr->cr_zone ? cr->cr_zone->zone_slabel : NULL)); in crgetlabel()
754 crisremote(const cred_t *cr) in crisremote() argument
756 return (REMOTE_PEER_CRED(cr)); in crisremote()
763 crsetresuid(cred_t *cr, uid_t r, uid_t e, uid_t s) in crsetresuid() argument
765 zone_t *zone = crgetzone(cr); in crsetresuid()
767 ASSERT(cr->cr_ref <= 2); in crsetresuid()
773 cr->cr_ruid = r; in crsetresuid()
775 cr->cr_uid = e; in crsetresuid()
777 cr->cr_suid = s; in crsetresuid()
783 crsetresgid(cred_t *cr, gid_t r, gid_t e, gid_t s) in crsetresgid() argument
785 zone_t *zone = crgetzone(cr); in crsetresgid()
787 ASSERT(cr->cr_ref <= 2); in crsetresgid()
793 cr->cr_rgid = r; in crsetresgid()
795 cr->cr_gid = e; in crsetresgid()
797 cr->cr_sgid = s; in crsetresgid()
803 crsetugid(cred_t *cr, uid_t uid, gid_t gid) in crsetugid() argument
805 zone_t *zone = crgetzone(cr); in crsetugid()
807 ASSERT(cr->cr_ref <= 2); in crsetugid()
812 cr->cr_uid = cr->cr_ruid = cr->cr_suid = uid; in crsetugid()
813 cr->cr_gid = cr->cr_rgid = cr->cr_sgid = gid; in crsetugid()
833 crsetgroups(cred_t *cr, int n, gid_t *grp) in crsetgroups() argument
835 ASSERT(cr->cr_ref <= 2); in crsetgroups()
840 if (cr->cr_grps != NULL) in crsetgroups()
841 crgrprele(cr->cr_grps); in crsetgroups()
844 cr->cr_grps = kmem_alloc(CREDGRPSZ(n), KM_SLEEP); in crsetgroups()
845 bcopy(grp, cr->cr_grps->crg_groups, n * sizeof (gid_t)); in crsetgroups()
846 cr->cr_grps->crg_ref = 1; in crsetgroups()
847 cr->cr_grps->crg_ngroups = n; in crsetgroups()
848 qsort(cr->cr_grps->crg_groups, n, sizeof (gid_t), gidcmp); in crsetgroups()
850 cr->cr_grps = NULL; in crsetgroups()
857 crsetprojid(cred_t *cr, projid_t projid) in crsetprojid() argument
860 cr->cr_projid = projid; in crsetprojid()
870 crgetgroups(const cred_t *cr) in crgetgroups() argument
872 return (cr->cr_grps == NULL ? &cr->cr_gid : cr->cr_grps->crg_groups); in crgetgroups()
876 crgetngroups(const cred_t *cr) in crgetngroups() argument
878 return (cr->cr_grps == NULL ? 0 : cr->cr_grps->crg_ngroups); in crgetngroups()
882 cred2prcred(const cred_t *cr, prcred_t *pcrp) in cred2prcred() argument
884 pcrp->pr_euid = cr->cr_uid; in cred2prcred()
885 pcrp->pr_ruid = cr->cr_ruid; in cred2prcred()
886 pcrp->pr_suid = cr->cr_suid; in cred2prcred()
887 pcrp->pr_egid = cr->cr_gid; in cred2prcred()
888 pcrp->pr_rgid = cr->cr_rgid; in cred2prcred()
889 pcrp->pr_sgid = cr->cr_sgid; in cred2prcred()
891 pcrp->pr_ngroups = cr->cr_grps == NULL ? 0 : cr->cr_grps->crg_ngroups; in cred2prcred()
894 bcopy(cr->cr_grps->crg_groups, pcrp->pr_groups, in cred2prcred()
899 cred2ucaud(const cred_t *cr, auditinfo64_addr_t *ainfo, const cred_t *rcr) in cred2ucaud() argument
907 ai = CR_AUINFO(cr); /* caller makes sure this is non-NULL */ in cred2ucaud()
924 cred2uclabel(const cred_t *cr, bslabel_t *labelp) in cred2uclabel() argument
928 if ((tslp = crgetlabel(cr)) != NULL) in cred2uclabel()
942 cred2ucred(const cred_t *cr, pid_t pid, void *buf, const cred_t *rcr) in cred2ucred() argument
945 uint32_t realsz = ucredminsize(cr); in cred2ucred()
946 ts_label_t *tslp = is_system_labeled() ? crgetlabel(cr) : NULL; in cred2ucred()
957 uc->uc_projid = cr->cr_projid; in cred2ucred()
958 uc->uc_zoneid = crgetzoneid(cr); in cred2ucred()
960 if (REMOTE_PEER_CRED(cr)) { in cred2ucred()
975 cred2prcred(cr, UCCRED(uc)); in cred2ucred()
976 cred2prpriv(cr, UCPRIV(uc)); in cred2ucred()
978 if (audoff == 0 || cred2ucaud(cr, UCAUD(uc), rcr) != 0) in cred2ucred()
993 ucredminsize(const cred_t *cr) in ucredminsize() argument
997 if (cr == NULL) in ucredminsize()
1000 if (REMOTE_PEER_CRED(cr)) { in ucredminsize()
1007 if (cr->cr_grps == NULL) in ucredminsize()
1010 ndiff = ngroups_max - cr->cr_grps->crg_ngroups; in ucredminsize()
1021 cred_t *cr; in pgetucred() local
1025 cr = p->p_cred; in pgetucred()
1026 crhold(cr); in pgetucred()
1029 uc = cred2ucred(cr, p->p_pid, NULL, CRED()); in pgetucred()
1030 crfree(cr); in pgetucred()
1042 crnetadjust(cred_t *cr) in crnetadjust() argument
1044 if (cr->cr_uid == 0 && cr->cr_ruid != 0) { in crnetadjust()
1045 cr = crdup(cr); in crnetadjust()
1046 cr->cr_uid = cr->cr_ruid; in crnetadjust()
1047 return (cr); in crnetadjust()
1057 crgetref(const cred_t *cr) in crgetref() argument
1059 return (cr->cr_ref); in crgetref()
1091 crsetzone(cred_t *cr, zone_t *zptr) in crsetzone() argument
1093 zone_t *oldzptr = cr->cr_zone; in crsetzone()
1095 ASSERT(cr != kcred); in crsetzone()
1096 ASSERT(cr->cr_ref <= 2); in crsetzone()
1097 cr->cr_zone = zptr; in crsetzone()
1110 cred_t *cr = NULL; in newcred_from_bslabel() local
1113 if ((cr = crdup_flags(dummycr, flags)) != NULL) { in newcred_from_bslabel()
1114 cr->cr_label = lbl; in newcred_from_bslabel()
1120 return (cr); in newcred_from_bslabel()
1129 copycred_from_tslabel(const cred_t *cr, ts_label_t *label, int flags) in copycred_from_tslabel() argument
1133 if ((newcr = crdup_flags(cr, flags)) != NULL) { in copycred_from_tslabel()
1147 copycred_from_bslabel(const cred_t *cr, bslabel_t *blabel, in copycred_from_bslabel() argument
1154 newcr = copycred_from_tslabel(cr, lbl, flags); in copycred_from_bslabel()
1305 crgetmapped(const cred_t *cr) in crgetmapped() argument
1312 if (cr == NULL) in crgetmapped()
1315 if (cr->cr_ksid != NULL) { in crgetmapped()
1316 if (cr->cr_ksid->kr_sidx[KSID_USER].ks_id > MAXUID) { in crgetmapped()
1317 eph_zsd = get_ephemeral_zsd(crgetzone(cr)); in crgetmapped()
1321 if (cr->cr_ksid->kr_sidx[KSID_GROUP].ks_id > MAXUID) { in crgetmapped()
1322 eph_zsd = get_ephemeral_zsd(crgetzone(cr)); in crgetmapped()
1327 return ((cred_t *)cr); in crgetmapped()
1332 crsetsid(cred_t *cr, ksid_t *ksp, int index) in crsetsid() argument
1334 ASSERT(cr->cr_ref <= 2); in crsetsid()
1336 if (cr->cr_ksid == NULL && ksp == NULL) in crsetsid()
1338 cr->cr_ksid = kcrsid_setsid(cr->cr_ksid, ksp, index); in crsetsid()
1342 crsetsidlist(cred_t *cr, ksidlist_t *ksl) in crsetsidlist() argument
1344 ASSERT(cr->cr_ref <= 2); in crsetsidlist()
1345 if (cr->cr_ksid == NULL && ksl == NULL) in crsetsidlist()
1347 cr->cr_ksid = kcrsid_setsidlist(cr->cr_ksid, ksl); in crsetsidlist()
1351 crgetsid(const cred_t *cr, int i) in crgetsid() argument
1354 if (cr->cr_ksid != NULL && cr->cr_ksid->kr_sidx[i].ks_domain) in crgetsid()
1355 return ((ksid_t *)&cr->cr_ksid->kr_sidx[i]); in crgetsid()
1360 crgetsidlist(const cred_t *cr) in crgetsidlist() argument
1362 if (cr->cr_ksid != NULL) in crgetsidlist()
1363 return (cr->cr_ksid->kr_sidlist); in crgetsidlist()
1374 crsetpriv(cred_t *cr, ...) in crsetpriv() argument
1379 ASSERT(cr->cr_ref <= 2); in crsetpriv()
1381 priv_set_PA(cr); in crsetpriv()
1383 va_start(ap, cr); in crsetpriv()
1390 priv_addset(&CR_PPRIV(cr), priv); in crsetpriv()
1391 priv_addset(&CR_EPRIV(cr), priv); in crsetpriv()
1393 priv_adjust_PA(cr); in crsetpriv()
1405 crset_zone_privall(cred_t *cr) in crset_zone_privall() argument
1407 zone_t *zone = crgetzone(cr); in crset_zone_privall()
1409 priv_fillset(&CR_LPRIV(cr)); in crset_zone_privall()
1410 CR_EPRIV(cr) = CR_PPRIV(cr) = CR_IPRIV(cr) = CR_LPRIV(cr); in crset_zone_privall()
1411 priv_intersect(zone->zone_privset, &CR_LPRIV(cr)); in crset_zone_privall()
1412 priv_intersect(zone->zone_privset, &CR_EPRIV(cr)); in crset_zone_privall()
1413 priv_intersect(zone->zone_privset, &CR_IPRIV(cr)); in crset_zone_privall()
1414 priv_intersect(zone->zone_privset, &CR_PPRIV(cr)); in crset_zone_privall()
1418 crgetcrklpd(const cred_t *cr) in crgetcrklpd() argument
1420 return (cr->cr_klpd); in crgetcrklpd()
1424 crsetcrklpd(cred_t *cr, struct credklpd *crklpd) in crsetcrklpd() argument
1426 ASSERT(cr->cr_ref <= 2); in crsetcrklpd()
1428 if (cr->cr_klpd != NULL) in crsetcrklpd()
1429 crklpd_rele(cr->cr_klpd); in crsetcrklpd()
1430 cr->cr_klpd = crklpd; in crsetcrklpd()
1460 crsetcredgrp(cred_t *cr, credgrp_t *grps) in crsetcredgrp() argument
1462 ASSERT(cr->cr_ref <= 2); in crsetcredgrp()
1464 if (cr->cr_grps != NULL) in crsetcredgrp()
1465 crgrprele(cr->cr_grps); in crsetcredgrp()
1467 cr->cr_grps = grps; in crsetcredgrp()