... otherwise we won't clean up local files from earlier boot stages.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
char *local_initrd;
char *local_dtb;
char *args;
char *local_initrd;
char *local_dtb;
char *args;
+ unsigned int clean_image;
+ unsigned int clean_initrd;
+ unsigned int clean_dtb;
struct pb_url *image, *initrd, *dtb;
boot_status_fn status_fn;
void *status_arg;
struct pb_url *image, *initrd, *dtb;
boot_status_fn status_fn;
void *status_arg;
static void boot_process(void *ctx, int status)
{
struct boot_task *task = ctx;
static void boot_process(void *ctx, int status)
{
struct boot_task *task = ctx;
- unsigned int clean_image = 0;
- unsigned int clean_initrd = 0;
- unsigned int clean_dtb = 0;
int result = -1;
if (task->state == BOOT_STATE_INITIAL) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_INFO, "loading kernel");
task->local_image = load_url_async(task, task->image,
int result = -1;
if (task->state == BOOT_STATE_INITIAL) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_INFO, "loading kernel");
task->local_image = load_url_async(task, task->image,
- &clean_image, boot_process);
+ &task->clean_image, boot_process);
if (!task->local_image) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_ERROR,
if (!task->local_image) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_ERROR,
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_INFO, "loading initrd");
task->local_initrd = load_url_async(task, task->initrd,
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_INFO, "loading initrd");
task->local_initrd = load_url_async(task, task->initrd,
- &clean_initrd, boot_process);
+ &task->clean_initrd, boot_process);
if (!task->local_initrd) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_ERROR,
if (!task->local_initrd) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_ERROR,
BOOT_STATUS_INFO,
"loading device tree");
task->local_dtb = load_url_async(task, task->dtb,
BOOT_STATUS_INFO,
"loading device tree");
task->local_dtb = load_url_async(task, task->dtb,
- &clean_dtb, boot_process);
+ &task->clean_dtb, boot_process);
if (!task->local_dtb) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_ERROR,
if (!task->local_dtb) {
update_status(task->status_fn, task->status_arg,
BOOT_STATUS_ERROR,
unlink(task->local_image);
unlink(task->local_image);
+ if (task->clean_initrd)
unlink(task->local_initrd);
unlink(task->local_initrd);
unlink(task->local_dtb);
if (!result) {
unlink(task->local_dtb);
if (!result) {