Print this page
6141 use kmem_zalloc instead of kmem_alloc + bzero/memset


 276                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 277                         return (set_errno(ESRCH));
 278                 }
 279                 mutex_enter(&rset->rcs_lock);
 280                 if (rctl_set_find(rset, hndl, &rctl) == -1) {
 281                         mutex_exit(&rset->rcs_lock);
 282                         mutex_exit(&curproc->p_lock);
 283                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 284                         return (set_errno(ESRCH));
 285                 }
 286                 if (RCTLOP_NO_USAGE(rctl)) {
 287                         mutex_exit(&rset->rcs_lock);
 288                         mutex_exit(&curproc->p_lock);
 289                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 290                         return (set_errno(ENOTSUP));
 291                 }
 292                 usage = RCTLOP_GET_USAGE(rctl, curproc);
 293                 mutex_exit(&rset->rcs_lock);
 294                 mutex_exit(&curproc->p_lock);
 295 
 296                 nblk = kmem_alloc(sizeof (rctl_opaque_t), KM_SLEEP);
 297                 bzero(nblk, sizeof (rctl_opaque_t));
 298                 nblk->rcq_value = usage;
 299 
 300                 ret = copyout(nblk, new_rblk, sizeof (rctl_opaque_t));
 301                 kmem_free(nblk, sizeof (rctl_opaque_t));
 302                 kmem_free(krde, sizeof (rctl_dict_entry_t));
 303                 return (ret == 0 ? 0 : set_errno(EFAULT));
 304         } else if (action == RCTL_FIRST) {
 305 
 306                 mutex_enter(&curproc->p_lock);
 307                 if (ret = rctl_local_get(hndl, NULL, nval, curproc)) {
 308                         mutex_exit(&curproc->p_lock);
 309                         kmem_cache_free(rctl_val_cache, nval);
 310                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 311                         return (set_errno(ret));
 312                 }
 313                 mutex_exit(&curproc->p_lock);
 314         } else {
 315                 /*
 316                  * RCTL_NEXT
 317                  */




 276                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 277                         return (set_errno(ESRCH));
 278                 }
 279                 mutex_enter(&rset->rcs_lock);
 280                 if (rctl_set_find(rset, hndl, &rctl) == -1) {
 281                         mutex_exit(&rset->rcs_lock);
 282                         mutex_exit(&curproc->p_lock);
 283                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 284                         return (set_errno(ESRCH));
 285                 }
 286                 if (RCTLOP_NO_USAGE(rctl)) {
 287                         mutex_exit(&rset->rcs_lock);
 288                         mutex_exit(&curproc->p_lock);
 289                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 290                         return (set_errno(ENOTSUP));
 291                 }
 292                 usage = RCTLOP_GET_USAGE(rctl, curproc);
 293                 mutex_exit(&rset->rcs_lock);
 294                 mutex_exit(&curproc->p_lock);
 295 
 296                 nblk = kmem_zalloc(sizeof (rctl_opaque_t), KM_SLEEP);

 297                 nblk->rcq_value = usage;
 298 
 299                 ret = copyout(nblk, new_rblk, sizeof (rctl_opaque_t));
 300                 kmem_free(nblk, sizeof (rctl_opaque_t));
 301                 kmem_free(krde, sizeof (rctl_dict_entry_t));
 302                 return (ret == 0 ? 0 : set_errno(EFAULT));
 303         } else if (action == RCTL_FIRST) {
 304 
 305                 mutex_enter(&curproc->p_lock);
 306                 if (ret = rctl_local_get(hndl, NULL, nval, curproc)) {
 307                         mutex_exit(&curproc->p_lock);
 308                         kmem_cache_free(rctl_val_cache, nval);
 309                         kmem_free(krde, sizeof (rctl_dict_entry_t));
 310                         return (set_errno(ret));
 311                 }
 312                 mutex_exit(&curproc->p_lock);
 313         } else {
 314                 /*
 315                  * RCTL_NEXT
 316                  */