kwboot : bug when board stops acking
Tony Dinh
mibodhi at gmail.com
Fri Jan 6 22:53:57 CET 2023
Hello,
On Fri, Jan 6, 2023 at 9:52 AM Pali Rohár <pali at kernel.org> wrote:
>
> Hello Stephane!
>
> On Wednesday 08 January 2020 15:21:12 SC wrote:
> > Hi list,
> >
> > I think there's a bug in kwboot.
> > I have a faulty board that stops acking xmodem frames after a certain number of packets and kwboot
> > instead of exiting continues to send frames up to 100%.
> > With the one second retry timer it's very long! More than 2 hours :-(
>
> I saw very similar bugs in kwboot and together with Marek we fixed lot
> of issues in kwboot.
>
> Could you test if last version of kwboot from U-Boot git master branch
> has still same or similar issue?
>
> > The bug is in the kwboot_xm_sendblock() fonction :
> > https://gitlab.denx.de/u-boot/u-boot/blob/master/tools/kwboot.c#L375
> > kwboot_tty_recv detects the timeout but the return value is based on the last character received
> > (line 403)
> > The variable c is not initialized so if it keeps the previous value which is ACK => rc=0 => infinite
> > loop
> >
> > There are several ways to fix the bug:
> > * Surround the "switch(c)" with a test:
> > if ( !((rc == -1) && (errno == ETIMEDOUT)) ) {
> > rc = -1;
> > switch (c) {
> > case ACK:
> > rc = 0;
> > break;
> > case NAK:
> > errno = EBADMSG;
> > break;
> > case CAN:
> > errno = ECANCELED;
> > break;
> > default:
> > errno = EPROTO;
> > break;
> > }
> > }
> > return rc;
> > * In the case of a TIMEOUT set c to a specific value and add the case in the switch
> >
I've been running the latest kwboot (2023.01-rc4), and I did not see
this problem. And the current code looks OK to me. c is modified
before it is used later:
https://github.com/u-boot/u-boot/blob/master/tools/kwboot.c#L1238
And the function kwboot_xm_sendblock() in GitHub is line L1215!
https://github.com/u-boot/u-boot/blob/master/tools/kwboot.c#L1215
Probably Stephane is running an older version of kwboot?
Best,
Tony
> > Do you agree with my diagnosis?
> > What is the best solution to fix this bug?
> > Should I provide a patch?
> >
> > Thank you,
> > Stephane
More information about the U-Boot
mailing list