On Fri, 17 Jun 2022 10:42:29 +0800
Yuan Wang <yuanx.w...@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: sta...@dpdk.org
> 
> Signed-off-by: Yuan Wang <yuanx.w...@intel.com>

Looks good and saves a few system calls.

Acked-by: Stephen Hemminger <step...@networkplumber.org>

Reply via email to