
On 24.09.21 23:06, Marek Behún wrote:
From: Pali Rohár pali@kernel.org
When kwboot_tty_recv() fails or times out, it does not set the `c` variable to NAK. The variable is then compared, while it holds either an undefined value or a value from previous iteration. Set `c` to NAK so that the other side will try to resend current block, and remove the now unnecessary break.
In other failure cases return immediately.
Signed-off-by: Pali Rohár pali@kernel.org Reviewed-by: Marek Behún marek.behun@nic.cz
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan
tools/kwboot.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/tools/kwboot.c b/tools/kwboot.c index 454339db14..b9a402ca91 100644 --- a/tools/kwboot.c +++ b/tools/kwboot.c @@ -380,12 +380,15 @@ kwboot_xm_sendblock(int fd, struct kwboot_block *block) do { rc = kwboot_tty_send(fd, block, sizeof(*block)); if (rc)
break;
return rc;
do { rc = kwboot_tty_recv(fd, &c, 1, blk_rsp_timeo);
if (rc)
break;
if (rc) {
if (errno != ETIMEDOUT)
return rc;
c = NAK;
} if (c != ACK && c != NAK && c != CAN) printf("%c", c);
Viele Grüße, Stefan