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

*** 8090,8100 **** */ (*cp->callbacks.cbo_umem_lock_cleanup)((ddi_umem_cookie_t)cp); /* remove the cookie if reference goes to zero */ ! if (atomic_add_long_nv((ulong_t *)(&(cp->cook_refcnt)), -1) == 0) { kmem_free(cp, sizeof (struct ddi_umem_cookie)); } } /* --- 8090,8100 ---- */ (*cp->callbacks.cbo_umem_lock_cleanup)((ddi_umem_cookie_t)cp); /* remove the cookie if reference goes to zero */ ! if (atomic_dec_ulong_nv((ulong_t *)(&(cp->cook_refcnt))) == 0) { kmem_free(cp, sizeof (struct ddi_umem_cookie)); } } /*
*** 8485,8495 **** * memory if the reference count goes to zero. The only * other value for rc is AS_CALLBACK_NOTFOUND. In that * case, just return the cookie memory. */ if ((rc != AS_CALLBACK_DELETE_DEFERRED) || ! (atomic_add_long_nv((ulong_t *)(&(p->cook_refcnt)), -1) == 0)) { kmem_free(p, sizeof (struct ddi_umem_cookie)); } } } --- 8485,8495 ---- * memory if the reference count goes to zero. The only * other value for rc is AS_CALLBACK_NOTFOUND. In that * case, just return the cookie memory. */ if ((rc != AS_CALLBACK_DELETE_DEFERRED) || ! (atomic_dec_ulong_nv((ulong_t *)(&(p->cook_refcnt))) == 0)) { kmem_free(p, sizeof (struct ddi_umem_cookie)); } } }