[PATCH 5/7] xyz-modem: Properly abort/terminate transfer on error

Pali Rohár pali at kernel.org
Thu Aug 12 23:48:04 CEST 2021


On Thursday 12 August 2021 15:46:23 Simon Glass wrote:
> Hi Pali,
> 
> On Tue, 3 Aug 2021 at 08:29, Pali Rohár <pali at kernel.org> wrote:
> >
> > Transfer termination tries to instruct sender that transfer was terminated.
> >
> > Print error message and indicates aborted transfer in return value.
> >
> > Signed-off-by: Pali Rohár <pali at kernel.org>
> > ---
> >  cmd/load.c | 14 +++++++++++++-
> >  1 file changed, 13 insertions(+), 1 deletion(-)
> 
> Reviewed-by: Simon Glass <sjg at chromium.org>
> 
> >
> > diff --git a/cmd/load.c b/cmd/load.c
> > index fb8c191fb64f..1ed05a9cd21e 100644
> > --- a/cmd/load.c
> > +++ b/cmd/load.c
> > @@ -975,6 +975,7 @@ static ulong load_serial_ymodem(ulong offset, int mode)
> >         res = xyzModem_stream_open(&info, &err);
> >         if (!res) {
> >
> > +               err = 0;
> >                 while ((res =
> >                         xyzModem_stream_read(ymodemBuf, 1024, &err)) > 0) {
> >                         store_addr = addr + offset;
> > @@ -987,6 +988,9 @@ static ulong load_serial_ymodem(ulong offset, int mode)
> >                                 rc = flash_write((char *) ymodemBuf,
> >                                                   store_addr, res);
> >                                 if (rc != 0) {
> > +                                       xyzModem_stream_terminate(true, &getcxmodem);
> > +                                       xyzModem_stream_close(&err);
> > +                                       printf("\n");
> >                                         flash_perror(rc);
> >                                         return (~0);
> >                                 }
> > @@ -998,12 +1002,20 @@ static ulong load_serial_ymodem(ulong offset, int mode)
> >                         }
> >
> >                 }
> > +               if (err) {
> > +                       xyzModem_stream_terminate((err == xyzModem_cancel) ? false : true, &getcxmodem);
> > +                       xyzModem_stream_close(&err);
> > +                       printf("\n%s\n", xyzModem_error(err));
> > +                       return (~0); /* Download aborted */
> > +               }
> > +
> >                 if (IS_ENABLED(CONFIG_CMD_BOOTEFI))
> >                         efi_set_bootdev("Uart", "", "",
> >                                         map_sysmem(offset, 0), size);
> >
> >         } else {
> > -               printf("%s\n", xyzModem_error(err));
> > +               printf("\n%s\n", xyzModem_error(err));
> > +               return (~0); /* Download aborted */
> 
> Should not have brackets around return value.

Hello! I have just copied used style around, to not mix different styles.

> >         }
> >
> >         xyzModem_stream_terminate(false, &getcxmodem);
> > --
> > 2.20.1
> >
> 
> Regards,
> Simon


More information about the U-Boot mailing list