[PATCH] net/virtio: fix socket nonblocking mode affects initialization

Maxime Coquelin maxime.coquelin at redhat.com
Fri Jul 1 15:53:58 CEST 2022



On 6/17/22 04:42, Yuan Wang 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>
> ---
>   drivers/net/virtio/virtio_user/vhost_user.c | 15 +--------------
>   1 file changed, 1 insertion(+), 14 deletions(-)
> 

Applied to dpdk-next-virtio/main.

Thanks,
Maxime



More information about the stable mailing list