qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qemu-char: reset errno before qemu char write o


From: Eric Blake
Subject: Re: [Qemu-devel] [PATCH] qemu-char: reset errno before qemu char write or read action
Date: Mon, 2 Jul 2018 06:57:46 -0500
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0

On 07/01/2018 07:49 PM, xinhua.Cao wrote:
In the tcp_chr_write function, we checked errno,
but errno was not reset before a read or write operation.
Therefore, this check of errno's actions is often
incorrect after EAGAIN has occurred.
We reset errno before reading and writing to
ensure the correctness of errno's judgment

Signed-off-by: xinhua.Cao <address@hidden>
---
  chardev/char-fe.c | 1 +
  chardev/char.c    | 2 ++
  2 files changed, 3 insertions(+)

diff --git a/chardev/char-fe.c b/chardev/char-fe.c
index b1f228e..d96ca6f 100644
--- a/chardev/char-fe.c
+++ b/chardev/char-fe.c
@@ -69,6 +69,7 @@ int qemu_chr_fe_read_all(CharBackend *be, uint8_t *buf, int 
len)
while (offset < len) {
      retry:
+        errno = 0;
          res = CHARDEV_GET_CLASS(s)->chr_sync_read(s, buf + offset,
                                                    len - offset);
          if (res == -1 && errno == EAGAIN) {

NACK. read() is guaranteed to have set errno if res is -1, and we don't check errno unless we first checked that res was -1. Thus, the EAGAIN check is not confused by a stale errno value.


--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org



reply via email to

[Prev in Thread] Current Thread [Next in Thread]