[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 02/10] chardev/char-socket: tcp_chr_recv: don't clobber errno
From: |
Roman Kagan |
Subject: |
[PATCH 02/10] chardev/char-socket: tcp_chr_recv: don't clobber errno |
Date: |
Thu, 11 Nov 2021 18:33:46 +0300 |
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>
---
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 836cfa0bc2..90054ce58c 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -346,13 +346,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++) {
@@ -381,6 +374,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;
}
--
2.33.1
- Re: [PATCH 01/10] vhost-user-blk: reconnect on any error during realize, (continued)
Re: [PATCH 01/10] vhost-user-blk: reconnect on any error during realize, Raphael Norwitz, 2021/11/29
[PATCH 05/10] vhost-backend: avoid overflow on memslots_limit, Roman Kagan, 2021/11/11
[PATCH 07/10] vhost-vdpa: stick to -errno error return convention, Roman Kagan, 2021/11/11
[PATCH 02/10] chardev/char-socket: tcp_chr_recv: don't clobber errno,
Roman Kagan <=
[PATCH 09/10] vhost: stick to -errno error return convention, Roman Kagan, 2021/11/11
[PATCH 10/10] vhost-user-blk: propagate error return from generic vhost, Roman Kagan, 2021/11/11
[PATCH 08/10] vhost-user: stick to -errno error return convention, Roman Kagan, 2021/11/11
[PATCH 04/10] chardev/char-fe: don't allow EAGAIN from blocking read, Roman Kagan, 2021/11/11
Re: [PATCH 00/10] vhost: stick to -errno error return convention, Michael S. Tsirkin, 2021/11/11