vhost-user-server: do not set memory fd non-blocking
authorStefano Garzarella <sgarzare@redhat.com>
Tue, 18 Jun 2024 10:00:35 +0000 (12:00 +0200)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 2 Jul 2024 13:27:56 +0000 (09:27 -0400)
commit4c58843e5d3192c67394b28a3330144ea56eefac
tree0e12866de3389d23f69bdf03cad9ae50d1a4007f
parentebdede644bbf5744f91dbe0d39742f17b03c4e10
vhost-user-server: do not set memory fd non-blocking

In vhost-user-server we set all fd received from the other peer
in non-blocking mode. For some of them (e.g. memfd, shm_open, etc.)
it's not really needed, because we don't use these fd with blocking
operations, but only to map memory.

In addition, in some systems this operation can fail (e.g. in macOS
setting an fd returned by shm_open() non-blocking fails with errno
= ENOTTY).

So, let's avoid setting fd non-blocking for those messages that we
know carry memory fd (e.g. VHOST_USER_ADD_MEM_REG,
VHOST_USER_SET_MEM_TABLE).

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
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-6-sgarzare@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
util/vhost-user-server.c