[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-9.1 v3 02/11] libvhost-user: fail vu_message_write() if sendm
From: |
Stefano Garzarella |
Subject: |
[PATCH for-9.1 v3 02/11] libvhost-user: fail vu_message_write() if sendmsg() is failing |
Date: |
Thu, 4 Apr 2024 14:23:21 +0200 |
In vu_message_write() we use sendmsg() to send the message header,
then a write() to send the payload.
If sendmsg() fails we should avoid sending the payload, since we
were unable to send the header.
Discovered before fixing the issue with the previous patch, where
sendmsg() failed on macOS due to wrong parameters, but the frontend
still sent the payload which the backend incorrectly interpreted
as a wrong header.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
subprojects/libvhost-user/libvhost-user.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/subprojects/libvhost-user/libvhost-user.c
b/subprojects/libvhost-user/libvhost-user.c
index 22bea0c775..a11afd1960 100644
--- a/subprojects/libvhost-user/libvhost-user.c
+++ b/subprojects/libvhost-user/libvhost-user.c
@@ -639,6 +639,11 @@ vu_message_write(VuDev *dev, int conn_fd, VhostUserMsg
*vmsg)
rc = sendmsg(conn_fd, &msg, 0);
} while (rc < 0 && (errno == EINTR || errno == EAGAIN));
+ if (rc <= 0) {
+ vu_panic(dev, "Error while writing: %s", strerror(errno));
+ return false;
+ }
+
if (vmsg->size) {
do {
if (vmsg->data) {
--
2.44.0
- [PATCH for-9.1 v3 00/11] vhost-user: support any POSIX system (tested on macOS, FreeBSD, OpenBSD), Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 01/11] libvhost-user: set msg.msg_control to NULL when it is empty, Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 02/11] libvhost-user: fail vu_message_write() if sendmsg() is failing,
Stefano Garzarella <=
- [PATCH for-9.1 v3 03/11] libvhost-user: mask F_INFLIGHT_SHMFD if memfd is not supported, Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 04/11] vhost-user-server: do not set memory fd non-blocking, Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 05/11] contrib/vhost-user-blk: fix bind() using the right size of the address, Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 06/11] vhost-user: enable frontends on any POSIX system, Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 07/11] libvhost-user: enable it on any POSIX system, Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 08/11] contrib/vhost-user-blk: enable it on any POSIX system, Stefano Garzarella, 2024/04/04
- [PATCH for-9.1 v3 09/11] hostmem: add a new memory backend based on POSIX shm_open(), Stefano Garzarella, 2024/04/04