From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by dpdk.org (Postfix) with ESMTP id 6DD594C95 for ; Wed, 13 Mar 2019 16:27:31 +0100 (CET) Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20190313152729euoutp02bf14acef3385a630ecdaa53aff465ef1~LjjO3b0a02317023170euoutp02Z for ; Wed, 13 Mar 2019 15:27:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20190313152729euoutp02bf14acef3385a630ecdaa53aff465ef1~LjjO3b0a02317023170euoutp02Z DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1552490849; bh=D5ivKumAE9Q3RnGvrjeXnWJGz1LlWEHmXDcWCReTGwk=; h=From:To:Cc:Subject:Date:References:From; b=PKdWfmbyR9DB3cnx7mhKtDD8lTD6ypdZacTnpdHs2gEnbNtv1xKrvP2nDas4YKL39 5IXWxljnA07c6hHYg3Vw4XeIuM0Zm6EWArZNr0e+DPELg5Uflqd8QEY1gZe6TyDXkP cidxiNZjUSBLCaPUt+x9/h3v6hHrJo+YF3wJ4/6I= Received: from eusmges1new.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20190313152728eucas1p298f4d4d698c2ee457618a24776458525~LjjOc3Pj72160521605eucas1p2p; Wed, 13 Mar 2019 15:27:28 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1new.samsung.com (EUCPMTA) with SMTP id C7.2B.04441.061298C5; Wed, 13 Mar 2019 15:27:28 +0000 (GMT) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20190313152727eucas1p1e43a9a297b7a40581c84b173063f6dc0~LjjNeUe8k2741927419eucas1p1M; Wed, 13 Mar 2019 15:27:27 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20190313152727eusmtrp19ee940628099a1f094442813659531dd~LjjNJ7awG0541705417eusmtrp1k; Wed, 13 Mar 2019 15:27:27 +0000 (GMT) X-AuditID: cbfec7f2-5c9ff70000001159-7d-5c892160e6c9 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id EC.B2.04128.F51298C5; Wed, 13 Mar 2019 15:27:27 +0000 (GMT) Received: from imaximets.rnd.samsung.ru (unknown [106.109.129.180]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20190313152727eusmtip272806fd082aff7b2b298ea05229bb33a~LjjMxaJgE0191301913eusmtip2e; Wed, 13 Mar 2019 15:27:27 +0000 (GMT) From: Ilya Maximets To: stable@dpdk.org, Yongseok Koh Cc: Maxime Coquelin , Ilya Maximets Date: Wed, 13 Mar 2019 18:27:18 +0300 Message-Id: <20190313152718.17888-1-i.maximets@samsung.com> X-Mailer: git-send-email 2.17.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrJIsWRmVeSWpSXmKPExsWy7djPc7oJip0xBot3i1pcaf/JbnGscw+L xb+OP+wWV+bvY3Zg8fi1YCmrx7Pph5k83u+7yubRt2UVYwBLFJdNSmpOZllqkb5dAlfGu5NN TAU3uCte7D7M3MB4jbOLkZNDQsBEYtbU9UwgtpDACkaJyVcjuhi5gOwvjBK/uy6xQDifGSWm r53MDNPx5OpdqMRyRol7h/8yQTg/GCUW9y8Bm8UmoCNxavURRhBbRMBM4t7cM6wgNrNAlMTr lh4WEFtYwF2ic956oDgHB4uAqsS7w2EgYV4Ba4n7HXfZIZbJS6zecIAZZL6EwA42ie3PvjFC JFwkGhv3QhUJS7w6vgXKlpE4PRlivoRAvcT9lpeMEM0dQC8c+scEkbCX2PL6HDvIYmYBTYn1 u/Qhwo4Svw6fZQIJSwjwSdx4KwhxMp/EpG3TmSHCvBIdbUIQ1SoSvw8uh4aJlMTNd5+hLvCQ WP76B9gUIYFYiTnLXScwys1CWLWAkXEVo3hqaXFuemqxYV5quV5xYm5xaV66XnJ+7iZGYISf /nf80w7Gr5eSDjEKcDAq8fBa8HfGCLEmlhVX5h5ilOBgVhLhPSIPFOJNSaysSi3Kjy8qzUkt PsQozcGiJM5bzfAgWkggPbEkNTs1tSC1CCbLxMEp1cBYcDdY9M6HnRtivjSbZxfOeXt49yaR OLOSFWYnfwU7PJti5cdbV+Jic/hJY8EZg13vlt9qPXPryX6el/zVe2SXC2dvuHzKa8JUlh4N eTPNpUmi9ldyHT8UpFxm2xlwIHXrZYsDuYf2lh7s3MbJ/OpC99zsc0nzb031OfVr3qGP8wo6 1Qo18141KrEUZyQaajEXFScCAFSPUTvsAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrILMWRmVeSWpSXmKPExsVy+t/xe7rxip0xBufOS1lcaf/JbnGscw+L xb+OP+wWV+bvY3Zg8fi1YCmrx7Pph5k83u+7yubRt2UVYwBLlJ5NUX5pSapCRn5xia1StKGF kZ6hpYWekYmlnqGxeayVkamSvp1NSmpOZllqkb5dgl7Gu5NNTAU3uCte7D7M3MB4jbOLkZND QsBE4snVuyxdjFwcQgJLGSU+TL/EBJGQkvjx6wIrhC0s8edaFxtE0TdGiY5Ze8ESbAI6EqdW H2EEsUUELCTuPfnLDGIzC0RJbFm4hwXEFhZwl+ictx6onoODRUBV4t3hMJAwr4C1xP2Ou+wQ 8+UlVm84wDyBkWcBI8MqRpHU0uLc9NxiI73ixNzi0rx0veT83E2MwODaduznlh2MXe+CDzEK cDAq8fBqMHbGCLEmlhVX5h5ilOBgVhLhPSIPFOJNSaysSi3Kjy8qzUktPsRoCrR7IrOUaHI+ MPDzSuINTQ3NLSwNzY3Njc0slMR5zxtURgkJpCeWpGanphakFsH0MXFwSjUw6kiHLd07aW17 8uSc9W+nLk/7p6PEs8q2XP+dv6Djo2lv26W4F0ZI/dS88f5oqmrrHbHv0bc22mrnPmLR6E8v 8+z8+yR/PYPM+cPVulxV97NDFH1S5hV7z1EssGP66ic+w3bnduka1q25/uZfLvnffJXSXeEU 9eXBrsUCmodWKNdPtZ0n+++8EktxRqKhFnNRcSIAtqdy3kQCAAA= X-CMS-MailID: 20190313152727eucas1p1e43a9a297b7a40581c84b173063f6dc0 X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20190313152727eucas1p1e43a9a297b7a40581c84b173063f6dc0 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20190313152727eucas1p1e43a9a297b7a40581c84b173063f6dc0 References: Subject: [dpdk-stable] [PATCH 17.11] net/virtio: add barrier before reading the flags 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: , X-List-Received-Date: Wed, 13 Mar 2019 15:27:31 -0000 [ backported from upstream commit d21d05c7a9c1c49ec927f961c4ab797a598af5ca ] Reading the used->flags could be reordered with avail->idx update. vhost in kernel disables notifications for the time of packets receiving, like this: 1. disable notify 2. process packets 3. enable notify 4. has more packets ? goto 1 In case of reordering, virtio driver could read the flags on step 2 while notifications disabled and update avail->idx after the step 4, i.e. vhost will exit the loop on step 4 with notifications enabled, but virtio will not notify. Fixes: c1f86306a026 ("virtio: add new driver") Cc: stable@dpdk.org Reported-by: Shahaf Shuler Signed-off-by: Ilya Maximets Reviewed-by: Maxime Coquelin Acked-by: Michael S. Tsirkin --- drivers/net/virtio/virtqueue.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/virtio/virtqueue.h b/drivers/net/virtio/virtqueue.h index 788d04dfa..6efd4f01c 100644 --- a/drivers/net/virtio/virtqueue.h +++ b/drivers/net/virtio/virtqueue.h @@ -354,6 +354,11 @@ vq_update_avail_ring(struct virtqueue *vq, uint16_t desc_idx) static inline int virtqueue_kick_prepare(struct virtqueue *vq) { + /* + * Ensure updated avail->idx is visible to vhost before reading + * the used->flags. + */ + virtio_mb(); return !(vq->vq_ring.used->flags & VRING_USED_F_NO_NOTIFY); } -- 2.17.1