X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fboot.c;fp=discover%2Fboot.c;h=0da40e3d8f4b11d6f13b20c2147ef5a3dfd521a3;hp=1e010ab1ebc316e6a13a0ef588abe4ff9ed9330d;hb=c208aa42024fddc74682742bec12735e432a5510;hpb=47d0601affe80d7f98a2053749f5e1d479f902f4 diff --git a/discover/boot.c b/discover/boot.c index 1e010ab..0da40e3 100644 --- a/discover/boot.c +++ b/discover/boot.c @@ -362,15 +362,14 @@ static void cleanup_load(struct load_url_result *result) static void cleanup_cancellations(struct boot_task *task, struct load_url_result *cur_result) { - struct load_url_result *result, **results[] = { - &task->image, &task->initrd, &task->dtb, - }; + struct boot_resource *resource; + struct load_url_result *result; bool pending = false; - unsigned int i; - for (i = 0; i < ARRAY_SIZE(results); i++) { - result = *results[i]; + list_for_each_entry(&task->resources, resource, list) { + result = resource->result; + /* Nothing to do if a load hasn't actually started yet */ if (!result) continue; @@ -378,9 +377,6 @@ static void cleanup_cancellations(struct boot_task *task, if (result == cur_result || result->status == LOAD_OK || result->status == LOAD_ERROR) { cleanup_load(result); - talloc_free(result); - *results[i] = NULL; - /* ... and cancel any pending loads, which we'll free in * the completion callback */ } else if (result->status == LOAD_ASYNC) {