[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v3 15/55] chardev/char-socket: tcp_chr_recv: don't clobber errno
From: |
Michael S. Tsirkin |
Subject: |
[PULL v3 15/55] chardev/char-socket: tcp_chr_recv: don't clobber errno |
Date: |
Fri, 7 Jan 2022 20:04:18 -0500 |
From: Roman Kagan <rvkagan@yandex-team.ru>
tcp_chr_recv communicates the specific error condition to the caller via
errno. However, after setting it, it may call into some system calls or
library functions which can clobber the errno.
Avoid this by moving the errno assignment to the end of the function.
Signed-off-by: Roman Kagan <rvkagan@yandex-team.ru>
Message-Id: <20211111153354.18807-3-rvkagan@yandex-team.ru>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
chardev/char-socket.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index d619088232..3ddd98ed49 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -290,13 +290,6 @@ static ssize_t tcp_chr_recv(Chardev *chr, char *buf,
size_t len)
NULL);
}
- if (ret == QIO_CHANNEL_ERR_BLOCK) {
- errno = EAGAIN;
- ret = -1;
- } else if (ret == -1) {
- errno = EIO;
- }
-
if (msgfds_num) {
/* close and clean read_msgfds */
for (i = 0; i < s->read_msgfds_num; i++) {
@@ -325,6 +318,13 @@ static ssize_t tcp_chr_recv(Chardev *chr, char *buf,
size_t len)
#endif
}
+ if (ret == QIO_CHANNEL_ERR_BLOCK) {
+ errno = EAGAIN;
+ ret = -1;
+ } else if (ret == -1) {
+ errno = EIO;
+ }
+
return ret;
}
--
MST
- Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, (continued)
- Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, Volker Rümelin, 2022/01/09
- Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, Michael S. Tsirkin, 2022/01/09
- Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, Volker Rümelin, 2022/01/09
- Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, Michael S. Tsirkin, 2022/01/09
- Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, Volker Rümelin, 2022/01/09
- Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, Volker Rümelin, 2022/01/09
Re: [PULL v3 12/55] virtio-pci: add support for configure interrupt, Cédric Le Goater, 2022/01/09
[PULL v3 13/55] trace-events,pci: unify trace events format, Michael S. Tsirkin, 2022/01/07
[PULL v3 14/55] vhost-user-blk: reconnect on any error during realize, Michael S. Tsirkin, 2022/01/07
[PULL v3 15/55] chardev/char-socket: tcp_chr_recv: don't clobber errno,
Michael S. Tsirkin <=
[PULL v3 16/55] chardev/char-socket: tcp_chr_sync_read: don't clobber errno, Michael S. Tsirkin, 2022/01/07
[PULL v3 17/55] vhost-backend: avoid overflow on memslots_limit, Michael S. Tsirkin, 2022/01/07
[PULL v3 18/55] vhost-backend: stick to -errno error return convention, Michael S. Tsirkin, 2022/01/07
[PULL v3 20/55] vhost-user: stick to -errno error return convention, Michael S. Tsirkin, 2022/01/07
[PULL v3 19/55] vhost-vdpa: stick to -errno error return convention, Michael S. Tsirkin, 2022/01/07
[PULL v3 22/55] vhost-user-blk: propagate error return from generic vhost, Michael S. Tsirkin, 2022/01/07
[PULL v3 21/55] vhost: stick to -errno error return convention, Michael S. Tsirkin, 2022/01/07
[PULL v3 24/55] pcie_aer: Don't trigger a LSI if none are defined, Michael S. Tsirkin, 2022/01/07
[PULL v3 23/55] pci: Export the pci_intx() function, Michael S. Tsirkin, 2022/01/07
[PULL v3 26/55] hw/smbios: Use qapi for SmbiosEntryPointType, Michael S. Tsirkin, 2022/01/07