diff -r 50a44cbd30af -r 8c32564252fd master/master.c --- a/master/master.c Thu Jun 12 07:15:54 2008 +0000 +++ b/master/master.c Thu Jun 12 07:26:38 2008 +0000 @@ -58,7 +58,7 @@ /*****************************************************************************/ void ec_master_destroy_slave_configs(ec_master_t *); -void ec_master_destroy_domains(ec_master_t *); +void ec_master_clear_domains(ec_master_t *); static int ec_master_idle_thread(ec_master_t *); static int ec_master_operation_thread(ec_master_t *); #ifdef EC_EOE @@ -231,7 +231,7 @@ #endif ec_master_destroy_slave_configs(master); ec_master_clear_slaves(master); - ec_master_destroy_domains(master); + ec_master_clear_domains(master); ec_fsm_master_clear(&master->fsm); ec_datagram_clear(&master->fsm_datagram); ec_device_clear(&master->backup_device); @@ -299,13 +299,14 @@ Destroy all domains. */ -void ec_master_destroy_domains(ec_master_t *master) +void ec_master_clear_domains(ec_master_t *master) { ec_domain_t *domain, *next; list_for_each_entry_safe(domain, next, &master->domains, list) { list_del(&domain->list); - ec_domain_destroy(domain); + ec_domain_clear(domain); + kfree(domain); } } @@ -517,7 +518,7 @@ master->cb_data = master; ec_master_destroy_slave_configs(master); - ec_master_destroy_domains(master); + ec_master_clear_domains(master); // set states for all slaves list_for_each_entry(slave, &master->slaves, list) { @@ -1202,17 +1203,14 @@ return NULL; } - if (list_empty(&master->domains)) index = 0; - else { + if (list_empty(&master->domains)) { + index = 0; + } else { last_domain = list_entry(master->domains.prev, ec_domain_t, list); index = last_domain->index + 1; } - if (ec_domain_init(domain, master, index)) { - EC_ERR("Failed to init domain.\n"); - return NULL; - } - + ec_domain_init(domain, master, index); list_add_tail(&domain->list, &master->domains); return domain;