Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*

*** 342,363 **** */ void crhold(cred_t *cr) { ASSERT(cr->cr_ref != 0xdeadbeef && cr->cr_ref != 0); ! atomic_add_32(&cr->cr_ref, 1); } /* * Release previous hold on a cred structure. Free it if refcnt == 0. * If cred uses label different from zone label, free it. */ void crfree(cred_t *cr) { ASSERT(cr->cr_ref != 0xdeadbeef && cr->cr_ref != 0); ! if (atomic_add_32_nv(&cr->cr_ref, -1) == 0) { ASSERT(cr != kcred); if (cr->cr_label) label_rele(cr->cr_label); if (cr->cr_klpd) crklpd_rele(cr->cr_klpd); --- 342,363 ---- */ void crhold(cred_t *cr) { ASSERT(cr->cr_ref != 0xdeadbeef && cr->cr_ref != 0); ! atomic_inc_32(&cr->cr_ref); } /* * Release previous hold on a cred structure. Free it if refcnt == 0. * If cred uses label different from zone label, free it. */ void crfree(cred_t *cr) { ASSERT(cr->cr_ref != 0xdeadbeef && cr->cr_ref != 0); ! if (atomic_dec_32_nv(&cr->cr_ref) == 0) { ASSERT(cr != kcred); if (cr->cr_label) label_rele(cr->cr_label); if (cr->cr_klpd) crklpd_rele(cr->cr_klpd);
*** 1465,1478 **** } void crgrprele(credgrp_t *grps) { ! if (atomic_add_32_nv(&grps->crg_ref, -1) == 0) kmem_free(grps, CREDGRPSZ(grps->crg_ngroups)); } static void crgrphold(credgrp_t *grps) { ! atomic_add_32(&grps->crg_ref, 1); } --- 1465,1478 ---- } void crgrprele(credgrp_t *grps) { ! if (atomic_dec_32_nv(&grps->crg_ref) == 0) kmem_free(grps, CREDGRPSZ(grps->crg_ngroups)); } static void crgrphold(credgrp_t *grps) { ! atomic_inc_32(&grps->crg_ref); }