[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