From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (xvm-189-124.dc0.ghst.net [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 88DF0A0A01 for ; Wed, 6 Jan 2021 07:43:54 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7A1181608C6; Wed, 6 Jan 2021 07:43:54 +0100 (CET) Received: from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129]) by mails.dpdk.org (Postfix) with ESMTP id 43E8B1608AA for ; Wed, 6 Jan 2021 07:43:52 +0100 (CET) Received: from Internal Mail-Server by MTLPINE1 (envelope-from matan@nvidia.com) with SMTP; 6 Jan 2021 08:43:50 +0200 Received: from pegasus25.mtr.labs.mlnx. (pegasus25.mtr.labs.mlnx [10.210.16.10]) by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id 1066hoau030655; Wed, 6 Jan 2021 08:43:50 +0200 From: Matan Azrad To: dev@dpdk.org Cc: Maxime Coquelin , stable@dpdk.org Date: Wed, 6 Jan 2021 06:43:29 +0000 Message-Id: <1609915409-272126-1-git-send-email-matan@nvidia.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-stable] [PATCH] vdpa/mlx5: fix configuration mutex cleanup X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" When the vDPA device is closed, the driver polling thread is canceled. The polling thread locks the configuration mutex while it polls the CQs. When the cancellation happens, it may terminate the thread inside the critical section what remains the configuration mutex locked. After device close, the driver may be configured again, in this case, for example, when the first queue state is updated, the driver tries to lock the mutex again and deadlock appears. Initialize the mutex after the polling thread cancellation. Fixes: 99abbd62c272 ("vdpa/mlx5: fix queue update synchronization") Cc: stable@dpdk.org Signed-off-by: Matan Azrad Acked-by: Xueming Li --- drivers/vdpa/mlx5/mlx5_vdpa.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/vdpa/mlx5/mlx5_vdpa.c b/drivers/vdpa/mlx5/mlx5_vdpa.c index b64f364..0b2f1ab 100644 --- a/drivers/vdpa/mlx5/mlx5_vdpa.c +++ b/drivers/vdpa/mlx5/mlx5_vdpa.c @@ -295,6 +295,8 @@ } priv->configured = 0; priv->vid = 0; + /* The mutex may stay locked after event thread cancel - initiate it. */ + pthread_mutex_init(&priv->vq_config_lock, NULL); DRV_LOG(INFO, "vDPA device %d was closed.", vid); return ret; } -- 1.8.3.1