[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for-9.1 v2 03/11] libvhost-user: mask F_INFLIGHT_SHMFD if memfd i
From: |
Stefano Garzarella |
Subject: |
[PATCH for-9.1 v2 03/11] libvhost-user: mask F_INFLIGHT_SHMFD if memfd is not supported |
Date: |
Tue, 26 Mar 2024 14:39:28 +0100 |
libvhost-user will panic when receiving VHOST_USER_GET_INFLIGHT_FD
message if MFD_ALLOW_SEALING is not defined, since it's not able
to create a memfd.
VHOST_USER_GET_INFLIGHT_FD is used only if
VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD is negotiated. So, let's mask
that feature if the backend is not able to properly handle these
messages.
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
subprojects/libvhost-user/libvhost-user.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/subprojects/libvhost-user/libvhost-user.c
b/subprojects/libvhost-user/libvhost-user.c
index a11afd1960..1c361ffd51 100644
--- a/subprojects/libvhost-user/libvhost-user.c
+++ b/subprojects/libvhost-user/libvhost-user.c
@@ -1674,6 +1674,16 @@ vu_get_protocol_features_exec(VuDev *dev, VhostUserMsg
*vmsg)
features |= dev->iface->get_protocol_features(dev);
}
+ /*
+ * If MFD_ALLOW_SEALING is not defined, we are not able to handle
+ * VHOST_USER_GET_INFLIGHT_FD messages, since we can't create a memfd.
+ * Those messages are used only if VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD
+ * is negotiated. A device implementation can enable it, so let's mask
+ * it to avoid a runtime panic.
+ */
+#ifndef MFD_ALLOW_SEALING
+ features &= ~(1ULL << VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD);
+#endif
vmsg_set_reply_u64(vmsg, features);
return true;
}
--
2.44.0
- Re: [PATCH for-9.1 v2 01/11] libvhost-user: set msg.msg_control to NULL when it is empty, (continued)
[PATCH for-9.1 v2 04/11] vhost-user-server: don't abort if we can't set fd non-blocking, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 03/11] libvhost-user: mask F_INFLIGHT_SHMFD if memfd is not supported,
Stefano Garzarella <=
[PATCH for-9.1 v2 05/11] contrib/vhost-user-blk: fix bind() using the right size of the address, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 06/11] vhost-user: enable frontends on any POSIX system, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 07/11] libvhost-user: enable it on any POSIX system, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 08/11] contrib/vhost-user-blk: enable it on any POSIX system, Stefano Garzarella, 2024/03/26
[PATCH for-9.1 v2 09/11] hostmem: add a new memory backend based on POSIX shm_open(), Stefano Garzarella, 2024/03/26