[PATCH] net/virtio: fix socket nonblocking mode affects initialization
Stephen Hemminger
stephen at networkplumber.org
Fri Jun 17 05:05:09 CEST 2022
On Fri, 17 Jun 2022 10:42:29 +0800
Yuan Wang <yuanx.wang at intel.com> wrote:
> The virtio-user initialization requires unix socket to receive backend
> messages in block mode. However, vhost_user_update_link_state() sets
> the same socket to nonblocking via fcntl, which affects all threads.
> Enabling the rxq interrupt can causes both of these behaviors to occur
> concurrently, with the result that the initialization may fail
> because no messages are received in nonblocking socket.
>
> Thread 1:
> virtio_init_device()
> --> virtio_user_start_device()
> --> vhost_user_set_memory_table()
> --> vhost_user_check_reply_ack()
>
> Thread 2:
> virtio_interrupt_handler()
> --> vhost_user_update_link_state()
>
> Fix that by replacing O_NONBLOCK with the recv per-call option
> MSG_DONTWAIT.
>
> Fixes: ef53b6030039 ("net/virtio-user: support LSC")
> Cc: stable at dpdk.org
>
> Signed-off-by: Yuan Wang <yuanx.wang at intel.com>
Looks good and saves a few system calls.
Acked-by: Stephen Hemminger <stephen at networkplumber.org>
More information about the dev
mailing list