[PATCH] discover/boot: Fix talloc parent for resource URLs
Samuel Mendoza-Jonas
sam at mendozajonas.com
Mon Dec 3 16:24:34 AEDT 2018
On Thu, 2018-11-29 at 12:55 +1100, Samuel Mendoza-Jonas wrote:
> The pb_urls for the boot resources use 'opt' as the talloc parent but
> this may be NULL, for example if this is a user-created boot option.
> Move the boot_task initialisation so it can be used as the talloc parent
> instead.
>
> Signed-off-by: Samuel Mendoza-Jonas <sam at mendozajonas.com>
> ---
> Alternate title: oh hey what's this branch from 2014?
Merged as ef0c91e9
>
> discover/boot.c | 16 +++++++++-------
> 1 file changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/discover/boot.c b/discover/boot.c
> index ed67cd50..91fc46d6 100644
> --- a/discover/boot.c
> +++ b/discover/boot.c
> @@ -526,25 +526,31 @@ struct boot_task *boot(void *ctx, struct discover_boot_option *opt,
> update_status(status_fn, status_arg, STATUS_INFO,
> _("Booting %s"), boot_desc);
>
> + boot_task = talloc_zero(ctx, struct boot_task);
> + boot_task->dry_run = dry_run;
> + boot_task->status_fn = status_fn;
> + boot_task->status_arg = status_arg;
> +
> if (cmd && cmd->boot_image_file) {
> - image = pb_url_parse(opt, cmd->boot_image_file);
> + image = pb_url_parse(boot_task, cmd->boot_image_file);
> } else if (opt && opt->boot_image) {
> image = opt->boot_image->url;
> } else {
> pb_log_fn("no image specified\n");
> update_status(status_fn, status_arg, STATUS_ERROR,
> _("Boot failed: no image specified"));
> + talloc_free(boot_task);
> return NULL;
> }
>
> if (cmd && cmd->initrd_file) {
> - initrd = pb_url_parse(opt, cmd->initrd_file);
> + initrd = pb_url_parse(boot_task, cmd->initrd_file);
> } else if (opt && opt->initrd) {
> initrd = opt->initrd->url;
> }
>
> if (cmd && cmd->dtb_file) {
> - dtb = pb_url_parse(opt, cmd->dtb_file);
> + dtb = pb_url_parse(boot_task, cmd->dtb_file);
> } else if (opt && opt->dtb) {
> dtb = opt->dtb->url;
> }
> @@ -554,10 +560,6 @@ struct boot_task *boot(void *ctx, struct discover_boot_option *opt,
> setenv("https_proxy", opt->proxy, 1);
> }
>
> - boot_task = talloc_zero(ctx, struct boot_task);
> - boot_task->dry_run = dry_run;
> - boot_task->status_fn = status_fn;
> - boot_task->status_arg = status_arg;
> list_init(&boot_task->resources);
>
> lockdown_type = lockdown_status();
More information about the Petitboot
mailing list