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