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


 264             ctxt_execname);
 265         err |= sw_add_optl_string(ctxt, FM_FMRI_SW_CTXT_ZONE, ctxt_zone);
 266         if (ctxt_pid != -1)
 267                 err |= nvlist_add_int64(ctxt, FM_FMRI_SW_CTXT_PID, ctxt_pid);
 268         if (ctxt_ctid != -1)
 269                 err |= nvlist_add_int64(ctxt, FM_FMRI_SW_CTXT_CTID, ctxt_ctid);
 270         if (ctxt_stack != NULL)
 271                 err |= nvlist_add_string_array(ctxt, FM_FMRI_SW_CTXT_STACK,
 272                     ctxt_stack, ctxt_stackdepth);
 273 
 274         /*
 275          * Add 'context' to the fmri.
 276          */
 277         if (err == 0)
 278                 err |= nvlist_add_nvlist(fmri, FM_FMRI_SW_CTXT, ctxt);
 279 
 280         moderr = err ? EMOD_NOMEM : 0;
 281 out:
 282         if (moderr == 0)
 283                 *out = fmri;
 284 
 285         if (moderr != 0 && fmri)
 286                 nvlist_free(fmri);
 287 
 288         if (obj)
 289                 nvlist_free(obj);
 290 
 291         if (site)
 292                 nvlist_free(site);
 293 
 294         if (ctxt)
 295                 nvlist_free(ctxt);
 296 
 297         return (moderr == 0 ? 0 : topo_mod_seterrno(mod, moderr));
 298 }
 299 
 300 
 301 /*ARGSUSED*/
 302 static int
 303 sw_enum(topo_mod_t *mod, tnode_t *pnode, const char *name,
 304     topo_instance_t min, topo_instance_t max, void *notused1, void *notused2)
 305 {
 306         (void) topo_method_register(mod, pnode, sw_methods);
 307         return (0);
 308 }
 309 
 310 static void
 311 sw_release(topo_mod_t *mod, tnode_t *node)
 312 {
 313         topo_method_unregister_all(mod, node);
 314 }




 264             ctxt_execname);
 265         err |= sw_add_optl_string(ctxt, FM_FMRI_SW_CTXT_ZONE, ctxt_zone);
 266         if (ctxt_pid != -1)
 267                 err |= nvlist_add_int64(ctxt, FM_FMRI_SW_CTXT_PID, ctxt_pid);
 268         if (ctxt_ctid != -1)
 269                 err |= nvlist_add_int64(ctxt, FM_FMRI_SW_CTXT_CTID, ctxt_ctid);
 270         if (ctxt_stack != NULL)
 271                 err |= nvlist_add_string_array(ctxt, FM_FMRI_SW_CTXT_STACK,
 272                     ctxt_stack, ctxt_stackdepth);
 273 
 274         /*
 275          * Add 'context' to the fmri.
 276          */
 277         if (err == 0)
 278                 err |= nvlist_add_nvlist(fmri, FM_FMRI_SW_CTXT, ctxt);
 279 
 280         moderr = err ? EMOD_NOMEM : 0;
 281 out:
 282         if (moderr == 0)
 283                 *out = fmri;
 284         else

 285                 nvlist_free(fmri);
 286 

 287         nvlist_free(obj);


 288         nvlist_free(site);


 289         nvlist_free(ctxt);
 290 
 291         return (moderr == 0 ? 0 : topo_mod_seterrno(mod, moderr));
 292 }
 293 
 294 
 295 /*ARGSUSED*/
 296 static int
 297 sw_enum(topo_mod_t *mod, tnode_t *pnode, const char *name,
 298     topo_instance_t min, topo_instance_t max, void *notused1, void *notused2)
 299 {
 300         (void) topo_method_register(mod, pnode, sw_methods);
 301         return (0);
 302 }
 303 
 304 static void
 305 sw_release(topo_mod_t *mod, tnode_t *node)
 306 {
 307         topo_method_unregister_all(mod, node);
 308 }