mirror of
https://gitlab.com/qemu-project/qemu.git
synced 2024-09-13 20:26:46 +03:00
libvhost-user: mask F_INFLIGHT_SHMFD if memfd is not supported
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. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Philippe Mathieu-Daudé <philmd@linaro.org> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com> Message-Id: <20240618100043.144657-5-sgarzare@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
92b58bc7e9
commit
ebdede644b
|
@ -1674,6 +1674,17 @@ vu_get_protocol_features_exec(VuDev *dev, VhostUserMsg *vmsg)
|
|||
features |= dev->iface->get_protocol_features(dev);
|
||||
}
|
||||
|
||||
#ifndef MFD_ALLOW_SEALING
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
features &= ~(1ULL << VHOST_USER_PROTOCOL_F_INFLIGHT_SHMFD);
|
||||
#endif
|
||||
|
||||
vmsg_set_reply_u64(vmsg, features);
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user