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


2398         pool_propput_undo_t *propput;
2399         nvlist_t *bl = NULL;
2400         const pool_prop_t *prop;
2401 
2402         if ((bp = pool_knl_find_nvpair(pke->pke_properties, name)) != NULL) {
2403                 if (nvlist_alloc(&bl, NV_UNIQUE_NAME_TYPE, 0) != 0) {
2404                         pool_seterror(POE_SYSTEM);
2405                         return (PO_FAIL);
2406                 }
2407                 if (nvlist_add_nvpair(bl, bp) != 0) {
2408                         nvlist_free(bl);
2409                         pool_seterror(POE_SYSTEM);
2410                         return (PO_FAIL);
2411                 }
2412         }
2413         if (pool_knl_nvlist_add_value(pke->pke_properties, name, val) !=
2414             PO_SUCCESS)
2415                 return (PO_FAIL);
2416 
2417         if (prov->pkc_log->l_state != LS_DO) {
2418                 if (bl)
2419                         nvlist_free(bl);
2420                 return (PO_SUCCESS);
2421         }
2422         /*
2423          * The remaining logic is setting up the arguments for the
2424          * POOL_PROPPUT ioctl and appending the details into the log.
2425          */
2426         if ((propput = malloc(sizeof (pool_propput_undo_t))) == NULL) {
2427                 pool_seterror(POE_SYSTEM);
2428                 return (PO_FAIL);
2429         }
2430         (void) memset(propput, 0, sizeof (pool_propput_undo_t));
2431         propput->ppu_blist = bl;
2432 
2433         ap = pool_knl_find_nvpair(pke->pke_properties, name);
2434 
2435         if (nvlist_alloc(&propput->ppu_alist, NV_UNIQUE_NAME_TYPE, 0) != 0) {
2436                 nvlist_free(propput->ppu_blist);
2437                 free(propput);
2438                 pool_seterror(POE_SYSTEM);


3443                 free(assoc);
3444                 break;
3445         case POOL_DISSOC:
3446                 dissoc = (pool_dissoc_undo_t *)li->li_details;
3447 
3448                 free(dissoc);
3449                 break;
3450         case POOL_TRANSFER:
3451                 pool_seterror(POE_BADPARAM);
3452                 return (PO_FAIL);
3453         case POOL_XTRANSFER:
3454                 xtransfer = (pool_xtransfer_undo_t *)li->li_details;
3455 
3456                 free(xtransfer->pxu_rl);
3457                 free(xtransfer->pxu_ioctl.px_o_comp_list);
3458                 free(xtransfer);
3459                 break;
3460         case POOL_PROPPUT:
3461                 propput = (pool_propput_undo_t *)li->li_details;
3462 
3463                 if (propput->ppu_blist)
3464                         nvlist_free(propput->ppu_blist);
3465                 free(propput->ppu_ioctl.pp_o_buf);
3466                 free(propput);
3467                 break;
3468         case POOL_PROPRM:
3469                 proprm = (pool_proprm_undo_t *)li->li_details;
3470 
3471                 free(proprm);
3472                 break;
3473         default:
3474                 return (PO_FAIL);
3475         }
3476         return (PO_SUCCESS);
3477 }
3478 
3479 /*
3480  * pool_knl_nvlist_add_value() adds a pool_value_t to an nvlist.
3481  */
3482 int
3483 pool_knl_nvlist_add_value(nvlist_t *list, const char *name,




2398         pool_propput_undo_t *propput;
2399         nvlist_t *bl = NULL;
2400         const pool_prop_t *prop;
2401 
2402         if ((bp = pool_knl_find_nvpair(pke->pke_properties, name)) != NULL) {
2403                 if (nvlist_alloc(&bl, NV_UNIQUE_NAME_TYPE, 0) != 0) {
2404                         pool_seterror(POE_SYSTEM);
2405                         return (PO_FAIL);
2406                 }
2407                 if (nvlist_add_nvpair(bl, bp) != 0) {
2408                         nvlist_free(bl);
2409                         pool_seterror(POE_SYSTEM);
2410                         return (PO_FAIL);
2411                 }
2412         }
2413         if (pool_knl_nvlist_add_value(pke->pke_properties, name, val) !=
2414             PO_SUCCESS)
2415                 return (PO_FAIL);
2416 
2417         if (prov->pkc_log->l_state != LS_DO) {

2418                 nvlist_free(bl);
2419                 return (PO_SUCCESS);
2420         }
2421         /*
2422          * The remaining logic is setting up the arguments for the
2423          * POOL_PROPPUT ioctl and appending the details into the log.
2424          */
2425         if ((propput = malloc(sizeof (pool_propput_undo_t))) == NULL) {
2426                 pool_seterror(POE_SYSTEM);
2427                 return (PO_FAIL);
2428         }
2429         (void) memset(propput, 0, sizeof (pool_propput_undo_t));
2430         propput->ppu_blist = bl;
2431 
2432         ap = pool_knl_find_nvpair(pke->pke_properties, name);
2433 
2434         if (nvlist_alloc(&propput->ppu_alist, NV_UNIQUE_NAME_TYPE, 0) != 0) {
2435                 nvlist_free(propput->ppu_blist);
2436                 free(propput);
2437                 pool_seterror(POE_SYSTEM);


3442                 free(assoc);
3443                 break;
3444         case POOL_DISSOC:
3445                 dissoc = (pool_dissoc_undo_t *)li->li_details;
3446 
3447                 free(dissoc);
3448                 break;
3449         case POOL_TRANSFER:
3450                 pool_seterror(POE_BADPARAM);
3451                 return (PO_FAIL);
3452         case POOL_XTRANSFER:
3453                 xtransfer = (pool_xtransfer_undo_t *)li->li_details;
3454 
3455                 free(xtransfer->pxu_rl);
3456                 free(xtransfer->pxu_ioctl.px_o_comp_list);
3457                 free(xtransfer);
3458                 break;
3459         case POOL_PROPPUT:
3460                 propput = (pool_propput_undo_t *)li->li_details;
3461 

3462                 nvlist_free(propput->ppu_blist);
3463                 free(propput->ppu_ioctl.pp_o_buf);
3464                 free(propput);
3465                 break;
3466         case POOL_PROPRM:
3467                 proprm = (pool_proprm_undo_t *)li->li_details;
3468 
3469                 free(proprm);
3470                 break;
3471         default:
3472                 return (PO_FAIL);
3473         }
3474         return (PO_SUCCESS);
3475 }
3476 
3477 /*
3478  * pool_knl_nvlist_add_value() adds a pool_value_t to an nvlist.
3479  */
3480 int
3481 pool_knl_nvlist_add_value(nvlist_t *list, const char *name,