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


1305         fmd_list_append(&mp->mod_cases, cip);
1306         fmd_module_setcdirty(mp);
1307 
1308         (void) pthread_mutex_lock(&cip->ci_mod->mod_stats_lock);
1309         cip->ci_mod->mod_stats->ms_caseopen.fmds_value.ui64++;
1310         (void) pthread_mutex_unlock(&cip->ci_mod->mod_stats_lock);
1311 
1312         return ((fmd_case_t *)cip);
1313 }
1314 
1315 static void
1316 fmd_case_destroy_suspects(fmd_case_impl_t *cip)
1317 {
1318         fmd_case_susp_t *cis, *ncis;
1319 
1320         ASSERT(MUTEX_HELD(&cip->ci_lock));
1321 
1322         if (cip->ci_proxy_asru)
1323                 fmd_free(cip->ci_proxy_asru, sizeof (uint8_t) *
1324                     cip->ci_nsuspects);
1325         if (cip->ci_diag_de)
1326                 nvlist_free(cip->ci_diag_de);
1327         if (cip->ci_diag_asru)
1328                 fmd_free(cip->ci_diag_asru, sizeof (uint8_t) *
1329                     cip->ci_nsuspects);
1330 
1331         for (cis = cip->ci_suspects; cis != NULL; cis = ncis) {
1332                 ncis = cis->cis_next;
1333                 nvlist_free(cis->cis_nvl);
1334                 fmd_free(cis, sizeof (fmd_case_susp_t));
1335         }
1336 
1337         cip->ci_suspects = NULL;
1338         cip->ci_nsuspects = 0;
1339 }
1340 
1341 fmd_case_t *
1342 fmd_case_recreate(fmd_module_t *mp, fmd_xprt_t *xp,
1343     uint_t state, const char *uuid, const char *code)
1344 {
1345         fmd_case_impl_t *cip = fmd_zalloc(sizeof (fmd_case_impl_t), FMD_SLEEP);


2414 
2415 void
2416 fmd_case_settime(fmd_case_t *cp, time_t tv_sec, suseconds_t tv_usec)
2417 {
2418         ((fmd_case_impl_t *)cp)->ci_tv.tv_sec = tv_sec;
2419         ((fmd_case_impl_t *)cp)->ci_tv.tv_usec = tv_usec;
2420         ((fmd_case_impl_t *)cp)->ci_tv_valid = 1;
2421 }
2422 
2423 void
2424 fmd_case_set_injected(fmd_case_t *cp)
2425 {
2426         ((fmd_case_impl_t *)cp)->ci_injected = 1;
2427 }
2428 
2429 void
2430 fmd_case_set_de_fmri(fmd_case_t *cp, nvlist_t *nvl)
2431 {
2432         fmd_case_impl_t *cip = (fmd_case_impl_t *)cp;
2433 
2434         if (cip->ci_diag_de)
2435                 nvlist_free(cip->ci_diag_de);
2436         cip->ci_diag_de = nvl;
2437 }
2438 
2439 void
2440 fmd_case_setcode(fmd_case_t *cp, char *code)
2441 {
2442         fmd_case_impl_t *cip = (fmd_case_impl_t *)cp;
2443 
2444         cip->ci_code = fmd_strdup(code, FMD_SLEEP);
2445         cip->ci_codelen = cip->ci_code ? strlen(cip->ci_code) + 1 : 0;
2446 }
2447 
2448 /*ARGSUSED*/
2449 static void
2450 fmd_case_repair_replay_case(fmd_case_t *cp, void *arg)
2451 {
2452         int not_faulty = 0;
2453         int faulty = 0;
2454         nvlist_t *nvl;




1305         fmd_list_append(&mp->mod_cases, cip);
1306         fmd_module_setcdirty(mp);
1307 
1308         (void) pthread_mutex_lock(&cip->ci_mod->mod_stats_lock);
1309         cip->ci_mod->mod_stats->ms_caseopen.fmds_value.ui64++;
1310         (void) pthread_mutex_unlock(&cip->ci_mod->mod_stats_lock);
1311 
1312         return ((fmd_case_t *)cip);
1313 }
1314 
1315 static void
1316 fmd_case_destroy_suspects(fmd_case_impl_t *cip)
1317 {
1318         fmd_case_susp_t *cis, *ncis;
1319 
1320         ASSERT(MUTEX_HELD(&cip->ci_lock));
1321 
1322         if (cip->ci_proxy_asru)
1323                 fmd_free(cip->ci_proxy_asru, sizeof (uint8_t) *
1324                     cip->ci_nsuspects);

1325         nvlist_free(cip->ci_diag_de);
1326         if (cip->ci_diag_asru)
1327                 fmd_free(cip->ci_diag_asru, sizeof (uint8_t) *
1328                     cip->ci_nsuspects);
1329 
1330         for (cis = cip->ci_suspects; cis != NULL; cis = ncis) {
1331                 ncis = cis->cis_next;
1332                 nvlist_free(cis->cis_nvl);
1333                 fmd_free(cis, sizeof (fmd_case_susp_t));
1334         }
1335 
1336         cip->ci_suspects = NULL;
1337         cip->ci_nsuspects = 0;
1338 }
1339 
1340 fmd_case_t *
1341 fmd_case_recreate(fmd_module_t *mp, fmd_xprt_t *xp,
1342     uint_t state, const char *uuid, const char *code)
1343 {
1344         fmd_case_impl_t *cip = fmd_zalloc(sizeof (fmd_case_impl_t), FMD_SLEEP);


2413 
2414 void
2415 fmd_case_settime(fmd_case_t *cp, time_t tv_sec, suseconds_t tv_usec)
2416 {
2417         ((fmd_case_impl_t *)cp)->ci_tv.tv_sec = tv_sec;
2418         ((fmd_case_impl_t *)cp)->ci_tv.tv_usec = tv_usec;
2419         ((fmd_case_impl_t *)cp)->ci_tv_valid = 1;
2420 }
2421 
2422 void
2423 fmd_case_set_injected(fmd_case_t *cp)
2424 {
2425         ((fmd_case_impl_t *)cp)->ci_injected = 1;
2426 }
2427 
2428 void
2429 fmd_case_set_de_fmri(fmd_case_t *cp, nvlist_t *nvl)
2430 {
2431         fmd_case_impl_t *cip = (fmd_case_impl_t *)cp;
2432 

2433         nvlist_free(cip->ci_diag_de);
2434         cip->ci_diag_de = nvl;
2435 }
2436 
2437 void
2438 fmd_case_setcode(fmd_case_t *cp, char *code)
2439 {
2440         fmd_case_impl_t *cip = (fmd_case_impl_t *)cp;
2441 
2442         cip->ci_code = fmd_strdup(code, FMD_SLEEP);
2443         cip->ci_codelen = cip->ci_code ? strlen(cip->ci_code) + 1 : 0;
2444 }
2445 
2446 /*ARGSUSED*/
2447 static void
2448 fmd_case_repair_replay_case(fmd_case_t *cp, void *arg)
2449 {
2450         int not_faulty = 0;
2451         int faulty = 0;
2452         nvlist_t *nvl;