Lines Matching refs:p

91 klpd_rele(klpd_reg_t *p)  in klpd_rele()  argument
93 if (atomic_dec_32_nv(&p->klpd_ref) == 0) { in klpd_rele()
94 if (p->klpd_refp != NULL) in klpd_rele()
95 klpd_unlink(p); in klpd_rele()
96 if (p->klpd_cred != NULL) in klpd_rele()
97 crfree(p->klpd_cred); in klpd_rele()
98 door_ki_rele(p->klpd_door); in klpd_rele()
99 kmem_free(p, sizeof (*p)); in klpd_rele()
110 klpd_rele_next(klpd_reg_t *p) in klpd_rele_next() argument
112 klpd_reg_t *r = p->klpd_next; in klpd_rele_next()
114 klpd_rele(p); in klpd_rele_next()
120 klpd_hold(klpd_reg_t *p) in klpd_hold() argument
122 atomic_inc_32(&p->klpd_ref); in klpd_hold()
129 klpd_unlink(klpd_reg_t *p) in klpd_unlink() argument
131 ASSERT(p->klpd_refp == NULL || *p->klpd_refp == p); in klpd_unlink()
133 if (p->klpd_refp != NULL) in klpd_unlink()
134 *p->klpd_refp = p->klpd_next; in klpd_unlink()
136 if (p->klpd_next != NULL) in klpd_unlink()
137 p->klpd_next->klpd_refp = p->klpd_refp; in klpd_unlink()
138 p->klpd_refp = NULL; in klpd_unlink()
151 klpd_reg_t *p; in klpd_freelist() local
153 while ((p = *pp) != NULL) { in klpd_freelist()
154 klpd_unlink(p); in klpd_freelist()
155 klpd_rele(p); in klpd_freelist()
165 klpd_link(klpd_reg_t *p, klpd_reg_t **listp, boolean_t single) in klpd_link() argument
169 ASSERT(p->klpd_ref == 1); in klpd_link()
172 p->klpd_refp = listp; in klpd_link()
173 p->klpd_next = single ? NULL : old; in klpd_link()
174 *listp = p; in klpd_link()
181 old->klpd_refp = &p->klpd_next; in klpd_link()
193 klpd_marshall(klpd_reg_t *p, const priv_set_t *rq, va_list ap) in klpd_marshall() argument
230 if (vnodetopath(crgetzone(p->klpd_cred)->zone_rootvp, in klpd_marshall()
231 vp, kap->kla_str, MAXPATHLEN, p->klpd_cred) != 0) { in klpd_marshall()
287 klpd_do_call(klpd_reg_t *p, const priv_set_t *req, va_list ap) in klpd_do_call() argument
294 if (p->klpd_door_pid == curproc->p_pid) in klpd_do_call()
297 klh = klpd_marshall(p, req, ap); in klpd_do_call()
309 while ((dres = door_ki_upcall_limited(p->klpd_door, &da, NULL, in klpd_do_call()
318 (void) klpd_unreg_dh(p->klpd_door); in klpd_do_call()
342 klpd_reg_t *p; in klpd_call() local
369 if ((p = ckp->crkl_reg) != NULL && in klpd_call()
370 p->klpd_indel == 0 && in klpd_call()
371 priv_issubset(req, &p->klpd_pset)) { in klpd_call()
372 klpd_hold(p); in klpd_call()
374 rv = klpd_do_call(p, req, ap); in klpd_call()
376 klpd_rele(p); in klpd_call()
388 if ((p = curproj->kpj_klpd) != NULL) { in klpd_call()
389 klpd_hold(p); in klpd_call()
391 if (p->klpd_indel == 0 && in klpd_call()
392 priv_issubset(req, &p->klpd_pset)) { in klpd_call()
393 rv = klpd_do_call(p, req, ap); in klpd_call()
396 klpd_rele(p); in klpd_call()
409 for (p = klpd_list; p != NULL; ) { in klpd_call()
410 zone_t *kkzone = crgetzone(p->klpd_cred); in klpd_call()
412 p->klpd_indel == 0 && in klpd_call()
413 priv_issubset(req, &p->klpd_pset)) { in klpd_call()
414 klpd_hold(p); in klpd_call()
416 rv = klpd_do_call(p, req, ap); in klpd_call()
419 p = klpd_rele_next(p); in klpd_call()
424 p = p->klpd_next; in klpd_call()
527 proc_t *p = curproc; in klpd_reg() local
536 mutex_enter(&p->p_crlock); in klpd_reg()
537 cr = p->p_cred; in klpd_reg()
540 p->p_cred = newcr; /* Already held for p_cred */ in klpd_reg()
543 mutex_exit(&p->p_crlock); in klpd_reg()
545 crset(p, newcr); in klpd_reg()
547 proc_t *p; in klpd_reg() local
550 p = prfind(pid); in klpd_reg()
551 if (p == NULL || !prochasprocperm(p, curproc, CRED())) { in klpd_reg()
554 return (set_errno(p == NULL ? ESRCH : EPERM)); in klpd_reg()
556 mutex_enter(&p->p_crlock); in klpd_reg()
557 crhold(pcr = p->p_cred); in klpd_reg()
559 mutex_exit(&p->p_crlock); in klpd_reg()
580 klpd_reg_t *p; in klpd_unreg_dh() local
583 for (p = klpd_list; p != NULL; p = p->klpd_next) { in klpd_unreg_dh()
584 if (p->klpd_door == dh) in klpd_unreg_dh()
587 if (p == NULL) { in klpd_unreg_dh()
591 if (p->klpd_indel != 0) { in klpd_unreg_dh()
595 p->klpd_indel = 1; in klpd_unreg_dh()
596 klpd_rele(p); in klpd_unreg_dh()
606 proc_t *p; in klpd_unreg() local
645 p = prfind(pid); in klpd_unreg()
646 if (p == NULL) { in klpd_unreg()
651 mutex_enter(&p->p_crlock); in klpd_unreg()
654 p = curproc; in klpd_unreg()
655 mutex_enter(&p->p_crlock); in klpd_unreg()
661 ckp = crgetcrklpd(p->p_cred); in klpd_unreg()
667 mutex_exit(&p->p_crlock); in klpd_unreg()