}
grub_printf ("\n");
- initrd_size = grub_file_size (file);
initrd_pages = (page_align (initrd_size) >> 12);
initrd_mem = grub_efi_allocate_pages (0, initrd_pages);
if (! initrd_mem)
GRUB_RELOCATOR_PREFERENCE_NONE);
if (err)
- {
- grub_file_close (file);
- return err;
- }
+ goto fail;
initrd_src = get_virtual_current_address (ch);
initrd_dest = get_physical_target_address (ch) | 0x80000000;
}
" rd_size=0x%" PRIxGRUB_ADDR, params,
initrd_dest, size);
if (!tmp)
- {
- grub_file_close (file);
- return grub_errno;
- }
+ goto fail;
grub_free (params);
params = tmp;
}
initrd_loaded = 1;
- grub_file_close (file);
+ fail:
+ for (i = 0; i < nfiles; i++)
+ grub_file_close (files[i]);
+ grub_free (files);
- return GRUB_ERR_NONE;
+ return grub_errno;
}
static grub_command_t cmd_linux, cmd_initrd;