From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 31380A054C for ; Fri, 14 Feb 2020 18:05:57 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 273A6F72; Fri, 14 Feb 2020 18:05:57 +0100 (CET) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) by dpdk.org (Postfix) with ESMTP id 7F977F72 for ; Fri, 14 Feb 2020 18:05:55 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1581699955; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OMe3GaffXy/U6vV451JgD8iLeTo83mHEUMBf8hePTd0=; b=eYFW+LKlO2NdjAl97EGOR7vnmVZAH3BijxRjKmO9epLZo0aS5QWV76KfkIpovUYydjOGTB IFvrorCorhV7G6YOdInEXIZDG23wyMeWvpUUg8Nz8wY85DY1nnkXsjmdgU6mmDdusWPh4o O/g1rAfwBCXT1w2tgFjE7FzaWc80EZQ= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-29-2BlfsT9lPdiHxQib1gNThg-1; Fri, 14 Feb 2020 12:05:51 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 431A418C35A0; Fri, 14 Feb 2020 17:05:50 +0000 (UTC) Received: from rh.redhat.com (unknown [10.33.36.13]) by smtp.corp.redhat.com (Postfix) with ESMTP id CC7A8863D2; Fri, 14 Feb 2020 17:05:41 +0000 (UTC) From: Kevin Traynor To: Zhike Wang Cc: Maxime Coquelin , dpdk stable Date: Fri, 14 Feb 2020 17:03:25 +0000 Message-Id: <20200214170337.25093-31-ktraynor@redhat.com> In-Reply-To: <20200214170337.25093-1-ktraynor@redhat.com> References: <20200214170337.25093-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-MC-Unique: 2BlfsT9lPdiHxQib1gNThg-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Subject: [dpdk-stable] patch 'vhost: fix crash on port deletion' has been queued to LTS release 18.11.7 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 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" Hi, FYI, your patch has been queued to LTS release 18.11.7 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/20/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasi= ng (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/90b5ba739f5b9c89a6= cc22f7b40c3b49c4668f5d Thanks. Kevin. --- >From 90b5ba739f5b9c89a6cc22f7b40c3b49c4668f5d Mon Sep 17 00:00:00 2001 From: Zhike Wang Date: Thu, 16 Jan 2020 10:07:37 +0800 Subject: [PATCH] vhost: fix crash on port deletion [ upstream commit 499fd8e5b89c2ce65d57875d0a7d67f3a7f2fb6b ] The vhost_user_read_cb() and rte_vhost_driver_unregister() can be called at the same time by 2 threads. Eg thread1 calls vhost_user_read_cb() and removes the vsocket from conn_list, then thread2 calls rte_vhost_driver_unregister() and frees the vsocket since it is NOT in the conn_list. So thread1 will access invalid memory when trying to reconnect. The fix is to move the "removing of vsocket from conn_list" to end of the vhost_user_read_cb(), then avoid the race condition. The core trace is: Program terminated with signal 11, Segmentation fault. Fixes: af1475918124 ("vhost: introduce API to start a specific driver") Signed-off-by: Zhike Wang Reviewed-by: Maxime Coquelin --- lib/librte_vhost/socket.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c index ea2fdb5529..6a57b27ec0 100644 --- a/lib/librte_vhost/socket.c +++ b/lib/librte_vhost/socket.c @@ -311,4 +311,9 @@ vhost_user_read_cb(int connfd, void *dat, int *remove) =09=09vhost_destroy_device(conn->vid); =20 +=09=09if (vsocket->reconnect) { +=09=09=09create_unix_socket(vsocket); +=09=09=09vhost_user_start_client(vsocket); +=09=09} + =09=09pthread_mutex_lock(&vsocket->conn_mutex); =09=09TAILQ_REMOVE(&vsocket->conn_list, conn, next); @@ -316,9 +321,4 @@ vhost_user_read_cb(int connfd, void *dat, int *remove) =20 =09=09free(conn); - -=09=09if (vsocket->reconnect) { -=09=09=09create_unix_socket(vsocket); -=09=09=09vhost_user_start_client(vsocket); -=09=09} =09} } --=20 2.21.1 --- Diff of the applied patch vs upstream commit (please double-check if non-= empty: --- --- -=092020-02-14 17:02:38.791544931 +0000 +++ 0031-vhost-fix-crash-on-port-deletion.patch=092020-02-14 17:02:37.04040= 6081 +0000 @@ -1 +1 @@ -From 499fd8e5b89c2ce65d57875d0a7d67f3a7f2fb6b Mon Sep 17 00:00:00 2001 +From 90b5ba739f5b9c89a6cc22f7b40c3b49c4668f5d Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 499fd8e5b89c2ce65d57875d0a7d67f3a7f2fb6b ] + @@ -22 +23,0 @@ -Cc: stable@dpdk.org @@ -31 +32 @@ -index 9740fb3403..85c64485c2 100644 +index ea2fdb5529..6a57b27ec0 100644 @@ -34 +35 @@ -@@ -319,4 +319,9 @@ vhost_user_read_cb(int connfd, void *dat, int *remove) +@@ -311,4 +311,9 @@ vhost_user_read_cb(int connfd, void *dat, int *remove) @@ -44 +45 @@ -@@ -324,9 +329,4 @@ vhost_user_read_cb(int connfd, void *dat, int *remove) +@@ -316,9 +321,4 @@ vhost_user_read_cb(int connfd, void *dat, int *remove)