Print this page
5045 use atomic_{inc,dec}_* instead of atomic_add_*
*** 132,142 ****
return (NULL);
mutex_enter(&nts->nts_lock);
nd = net_find(protocol, nts);
if (nd != NULL)
! atomic_add_32((uint_t *)&nd->netd_refcnt, 1);
mutex_exit(&nts->nts_lock);
return (nd);
}
/*
--- 132,142 ----
return (NULL);
mutex_enter(&nts->nts_lock);
nd = net_find(protocol, nts);
if (nd != NULL)
! atomic_inc_32((uint_t *)&nd->netd_refcnt);
mutex_exit(&nts->nts_lock);
return (nd);
}
/*
*** 155,165 ****
* of net_protocol_release() is going to free this structure then
* it is now the only owner (refcnt==1) and it will have been
* removed from the nts_netd_head list on the neti_stack_t from a
* call to net_protocol_unregister already, so it is thus an orphan.
*/
! if (atomic_add_32_nv((uint_t *)&info->netd_refcnt, -1) == 0) {
ASSERT(info->netd_hooks == NULL);
ASSERT(info->netd_stack == NULL);
kmem_free(info, sizeof (struct net_data));
}
--- 155,165 ----
* of net_protocol_release() is going to free this structure then
* it is now the only owner (refcnt==1) and it will have been
* removed from the nts_netd_head list on the neti_stack_t from a
* call to net_protocol_unregister already, so it is thus an orphan.
*/
! if (atomic_dec_32_nv((uint_t *)&info->netd_refcnt) == 0) {
ASSERT(info->netd_hooks == NULL);
ASSERT(info->netd_stack == NULL);
kmem_free(info, sizeof (struct net_data));
}
*** 199,209 ****
if (info != NULL)
(void) net_protocol_release(info);
if (n != NULL)
! atomic_add_32((uint_t *)&n->netd_refcnt, 1);
mutex_exit(&nts->nts_lock);
return (n);
}
--- 199,209 ----
if (info != NULL)
(void) net_protocol_release(info);
if (n != NULL)
! atomic_inc_32((uint_t *)&n->netd_refcnt);
mutex_exit(&nts->nts_lock);
return (n);
}