Print this page
6659 nvlist_free(NULL) is a no-op


 349                 goto error;
 350 
 351         listp = nvf_list(hdl);
 352         for (pua = list_head(listp); pua != NULL;
 353             pua = list_next(listp, pua)) {
 354                 (void) snprintf(buf, sizeof (buf), "%d", pua->pua_index);
 355                 rval = nvlist_add_int32(sub_nvl, buf, pua->pua_addr);
 356                 if (rval != DDI_SUCCESS)
 357                         goto error;
 358         }
 359 
 360         rval = nvlist_add_nvlist(nvl, "table", sub_nvl);
 361         if (rval != DDI_SUCCESS)
 362                 goto error;
 363         nvlist_free(sub_nvl);
 364 
 365         *ret_nvl = nvl;
 366         return (DDI_SUCCESS);
 367 
 368 error:
 369         if (sub_nvl)
 370                 nvlist_free(sub_nvl);
 371         ASSERT(nvl);
 372         nvlist_free(nvl);
 373         *ret_nvl = NULL;
 374         return (DDI_FAILURE);
 375 }
 376 
 377 static void
 378 pci_cache_free_list(nvf_handle_t hdl)
 379 {
 380         list_t          *listp;
 381         pua_node_t      *pua;
 382 
 383         ASSERT(RW_WRITE_HELD(nvf_lock(hdl)));
 384 
 385         listp = nvf_list(hdl);
 386         for (pua = list_head(listp); pua != NULL;
 387             pua = list_next(listp, pua)) {
 388                 list_remove(listp, pua);
 389                 kmem_free(pua, sizeof (pua_node_t));




 349                 goto error;
 350 
 351         listp = nvf_list(hdl);
 352         for (pua = list_head(listp); pua != NULL;
 353             pua = list_next(listp, pua)) {
 354                 (void) snprintf(buf, sizeof (buf), "%d", pua->pua_index);
 355                 rval = nvlist_add_int32(sub_nvl, buf, pua->pua_addr);
 356                 if (rval != DDI_SUCCESS)
 357                         goto error;
 358         }
 359 
 360         rval = nvlist_add_nvlist(nvl, "table", sub_nvl);
 361         if (rval != DDI_SUCCESS)
 362                 goto error;
 363         nvlist_free(sub_nvl);
 364 
 365         *ret_nvl = nvl;
 366         return (DDI_SUCCESS);
 367 
 368 error:

 369         nvlist_free(sub_nvl);
 370         ASSERT(nvl);
 371         nvlist_free(nvl);
 372         *ret_nvl = NULL;
 373         return (DDI_FAILURE);
 374 }
 375 
 376 static void
 377 pci_cache_free_list(nvf_handle_t hdl)
 378 {
 379         list_t          *listp;
 380         pua_node_t      *pua;
 381 
 382         ASSERT(RW_WRITE_HELD(nvf_lock(hdl)));
 383 
 384         listp = nvf_list(hdl);
 385         for (pua = list_head(listp); pua != NULL;
 386             pua = list_next(listp, pua)) {
 387                 list_remove(listp, pua);
 388                 kmem_free(pua, sizeof (pua_node_t));