equal
deleted
inserted
replaced
180 ec_sii_string_t *string, *next_str; |
180 ec_sii_string_t *string, *next_str; |
181 ec_sii_sync_t *sync, *next_sync; |
181 ec_sii_sync_t *sync, *next_sync; |
182 ec_sii_pdo_t *pdo, *next_pdo; |
182 ec_sii_pdo_t *pdo, *next_pdo; |
183 ec_sii_pdo_entry_t *entry, *next_ent; |
183 ec_sii_pdo_entry_t *entry, *next_ent; |
184 ec_sdo_t *sdo, *next_sdo; |
184 ec_sdo_t *sdo, *next_sdo; |
185 ec_sdo_entry_t *en, *next_en; |
|
186 ec_sdo_data_t *sdodata, *next_sdodata; |
185 ec_sdo_data_t *sdodata, *next_sdodata; |
187 |
186 |
188 slave = container_of(kobj, ec_slave_t, kobj); |
187 slave = container_of(kobj, ec_slave_t, kobj); |
189 |
188 |
190 // free all string objects |
189 // free all string objects |
220 if (slave->sii_name) kfree(slave->sii_name); |
219 if (slave->sii_name) kfree(slave->sii_name); |
221 |
220 |
222 // free all SDOs |
221 // free all SDOs |
223 list_for_each_entry_safe(sdo, next_sdo, &slave->sdo_dictionary, list) { |
222 list_for_each_entry_safe(sdo, next_sdo, &slave->sdo_dictionary, list) { |
224 list_del(&sdo->list); |
223 list_del(&sdo->list); |
225 if (sdo->name) kfree(sdo->name); |
224 kobject_del(&sdo->kobj); |
226 |
225 kobject_put(&sdo->kobj); |
227 // free all SDO entries |
|
228 list_for_each_entry_safe(en, next_en, &sdo->entries, list) { |
|
229 list_del(&en->list); |
|
230 kfree(en); |
|
231 } |
|
232 kfree(sdo); |
|
233 } |
226 } |
234 |
227 |
235 // free all SDO configurations |
228 // free all SDO configurations |
236 list_for_each_entry_safe(sdodata, next_sdodata, &slave->sdo_confs, list) { |
229 list_for_each_entry_safe(sdodata, next_sdodata, &slave->sdo_confs, list) { |
237 list_del(&sdodata->list); |
230 list_del(&sdodata->list); |