Le Fri, Mar 11, 2016 à 11:01 PM, Andrei Borzenkov <arvidj...@gmail.com> a
écrit :

> 12.03.2016 01:00, Vladimir 'phcoder' Serbinenko пишет:
> > On Friday, March 11, 2016, Josef Bacik <jba...@fb.com> wrote:
> >
> >> On 03/11/2016 02:34 PM, Vladimir 'phcoder' Serbinenko wrote:
> >>
> >>>
> >>>
> >>> Le ven. 11 mars 2016 19:13, Josef Bacik <jba...@fb.com
> >>> <mailto:jba...@fb.com>> a écrit :
> >>>
> >>>     On 03/11/2016 12:23 PM, Vladimir 'phcoder' Serbinenko wrote:
> >>>      >
> >>>      >
> >>>      > On Friday, March 11, 2016, Josef Bacik <jba...@fb.com
> >>>     <mailto:jba...@fb.com>
> >>>      > <mailto:jba...@fb.com <mailto: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.
> >>>      >
> >>>
> >>>     So do we not want close functions to do grub_error() at all?  Seems
> >>> like
> >>>     there may be some cases where we want to know there was an error
> >>> closing
> >>>     a tcp socket or the initrd?  Maybe not, just want to make sure
> before
> >>> I
> >>>     go make these two functions void.
> >>>
> >>> How can a failure occur in close routines? What can we do with the
> >>> failure anyway?
> >>>
>
> It is not about problems in close routines themselves, but we call them
> to cleanup and lose errors that caused us to clean up.
>
> Yes, and if we don't put the logic to preserve errors in the close
functions, we'll have to repeat this code at every call site which is
error-prone and is code duplication.

> >>
> >> So sending the FIN packet for the tcp close was failing for example.  I
> >> don't think we can do anything really, I just don't like doing a patch 4
> >> times, so I want to make sure turning these close functions into void's
> is
> >> ok.  Thanks,
> >>
> >> I prefer void close functions.  Give it another day and if nobody
> objects
> > by then, then it's fine for everyone.
> >
>
> May be I miss something obvious here - which close functions do you
> mean? grub_net_tcp_close() is void already, like is grub_initrd_close.
> So what exactly do you suggest to change?
>
I suggest to make them preserve grub_errno properly.

>
> The problem is that we lose error indication from upper level protocols
> or preceding code every time we close file or socket due to previous error.
>
Yes, and we need to change close routines, to preserve grub_errno

>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
>
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to