On Friday, March 11, 2016, Josef Bacik <jba...@fb.com> wrote:

> If you try to load an initrd from http and it errors out we will free the
> initrd
> context but continue on because net_tcp_socket_close() will reset the
> grub_errno
> as will grub_initrd_close().  So we'll lose the errno and return
> GRUB_ERR_NONE
> instead of the original error.  Add push/pulls to the appropriate places
> so we
> don't lose our errno.  Thanks,
>
Close functions shouldn't do this. Can you fix them instead? Also please
add [2.02] to the subjectwhen appropriate, like in this case.

>
> Signed-off-by: Josef Bacik <jba...@fb.com <javascript:;>>
> ---
>  grub-core/loader/linux.c | 2 ++
>  grub-core/net/http.c     | 2 ++
>  2 files changed, 4 insertions(+)
>
> diff --git a/grub-core/loader/linux.c b/grub-core/loader/linux.c
> index be6fa0f..bd61ca2 100644
> --- a/grub-core/loader/linux.c
> +++ b/grub-core/loader/linux.c
> @@ -202,7 +202,9 @@ grub_initrd_init (int argc, char *argv[],
>        initrd_ctx->components[i].file = grub_file_open (fname);
>        if (!initrd_ctx->components[i].file)
>         {
> +         grub_error_push ();
>           grub_initrd_close (initrd_ctx);
> +         grub_error_pop ();
>           return grub_errno;
>         }
>        initrd_ctx->nfiles++;
> diff --git a/grub-core/net/http.c b/grub-core/net/http.c
> index 4684f8b..0eeb2f6 100644
> --- a/grub-core/net/http.c
> +++ b/grub-core/net/http.c
> @@ -406,7 +406,9 @@ http_establish (struct grub_file *file, grub_off_t
> offset, int initial)
>    err = grub_net_send_tcp_packet (data->sock, nb, 1);
>    if (err)
>      {
> +      grub_error_push ();
>        grub_net_tcp_close (data->sock, GRUB_NET_TCP_ABORT);
> +      grub_error_pop ();
>        return err;
>      }
>
> --
> 2.5.0
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org <javascript:;>
> https://lists.gnu.org/mailman/listinfo/grub-devel
>


-- 
Regards
Vladimir 'phcoder' Serbinenko
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to