Message ID | 20220125171313.14498-12-kabel@kernel.org |
---|---|
State | Accepted |
Commit | 6ba7d63e018c6d777c9fe7afdf9719fcb220c31a |
Delegated to: | Stefan Roese |
Headers | show |
Series | Another set of kwboot improvements | expand |
On 1/25/22 18:13, Marek Behún wrote: > From: Pali Rohár <pali@kernel.org> > > The write() syscall may be interrupted. Handle EINTR and retry it. > > Signed-off-by: Pali Rohár <pali@kernel.org> > Signed-off-by: Marek Behún <marek.behun@nic.cz> Reviewed-by: Stefan Roese <sr@denx.de> Thanks, Stefan > --- > tools/kwboot.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/tools/kwboot.c b/tools/kwboot.c > index de433c1b04..8b748f0fdd 100644 > --- a/tools/kwboot.c > +++ b/tools/kwboot.c > @@ -292,13 +292,15 @@ static int blk_rsp_timeo = KWBOOT_BLK_RSP_TIMEO; > static ssize_t > kwboot_write(int fd, const char *buf, size_t len) > { > - size_t tot = 0; > + ssize_t tot = 0; > > while (tot < len) { > ssize_t wr = write(fd, buf + tot, len - tot); > > - if (wr < 0) > - return -1; > + if (wr < 0 && errno == EINTR) > + continue; > + else if (wr < 0) > + return wr; > > tot += wr; > } Viele Grüße, Stefan Roese
diff --git a/tools/kwboot.c b/tools/kwboot.c index de433c1b04..8b748f0fdd 100644 --- a/tools/kwboot.c +++ b/tools/kwboot.c @@ -292,13 +292,15 @@ static int blk_rsp_timeo = KWBOOT_BLK_RSP_TIMEO; static ssize_t kwboot_write(int fd, const char *buf, size_t len) { - size_t tot = 0; + ssize_t tot = 0; while (tot < len) { ssize_t wr = write(fd, buf + tot, len - tot); - if (wr < 0) - return -1; + if (wr < 0 && errno == EINTR) + continue; + else if (wr < 0) + return wr; tot += wr; }