[dpdk-stable] patch 'vhost: fix crash after mmap failure' has been queued to LTS release 17.11.6

Yongseok Koh yskoh at mellanox.com
Fri Mar 8 18:46:46 CET 2019


Hi,

FYI, your patch has been queued to LTS release 17.11.6

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objection by 03/13/19. So please
shout if anyone has objection.

Also note that after the patch there's a diff of the upstream commit vs the patch applied
to the branch. If the code is different (ie: not only metadata diffs), due for example to
a change in context or macro names, please double check it.

Thanks.

Yongseok

---
>From 855eea4e18c11d5a7856adfa570eca1f39863f6f Mon Sep 17 00:00:00 2001
From: Maxime Coquelin <maxime.coquelin at redhat.com>
Date: Tue, 27 Nov 2018 10:54:51 +0100
Subject: [PATCH] vhost: fix crash after mmap failure

[ upstream commit cf14478d775cadbaed4f5aa96e3812b44a2383c1 ]

If mmap() call fails in vhost_user_set_mem_table, dev->mem
is set to NULL. If later, qva_to_vva() is called, a segfault
occurs.

Fixes: 8f972312b8f4 ("vhost: support vhost-user")

Reviewed-by: Tiwei Bie <tiwei.bie at intel.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
Reviewed-by: Jens Freimann <jfreimann at redhat.com>
---
 lib/librte_vhost/vhost_user.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 74c286e34..aacf75b13 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -334,6 +334,9 @@ qva_to_vva(struct virtio_net *dev, uint64_t qva, uint64_t *len)
 	struct rte_vhost_mem_region *r;
 	uint32_t i;
 
+	if (unlikely(!dev || !dev->mem))
+		goto out_error;
+
 	/* Find the region where the address lives. */
 	for (i = 0; i < dev->mem->nregions; i++) {
 		r = &dev->mem->regions[i];
@@ -348,6 +351,7 @@ qva_to_vva(struct virtio_net *dev, uint64_t qva, uint64_t *len)
 			       r->host_user_addr;
 		}
 	}
+out_error:
 	*len = 0;
 
 	return 0;
-- 
2.11.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2019-03-08 09:46:40.801703391 -0800
+++ 0008-vhost-fix-crash-after-mmap-failure.patch	2019-03-08 09:46:39.987396000 -0800
@@ -1,14 +1,15 @@
-From cf14478d775cadbaed4f5aa96e3812b44a2383c1 Mon Sep 17 00:00:00 2001
+From 855eea4e18c11d5a7856adfa570eca1f39863f6f Mon Sep 17 00:00:00 2001
 From: Maxime Coquelin <maxime.coquelin at redhat.com>
 Date: Tue, 27 Nov 2018 10:54:51 +0100
 Subject: [PATCH] vhost: fix crash after mmap failure
 
+[ upstream commit cf14478d775cadbaed4f5aa96e3812b44a2383c1 ]
+
 If mmap() call fails in vhost_user_set_mem_table, dev->mem
 is set to NULL. If later, qva_to_vva() is called, a segfault
 occurs.
 
 Fixes: 8f972312b8f4 ("vhost: support vhost-user")
-Cc: stable at dpdk.org
 
 Reviewed-by: Tiwei Bie <tiwei.bie at intel.com>
 Signed-off-by: Maxime Coquelin <maxime.coquelin at redhat.com>
@@ -18,10 +19,10 @@
  1 file changed, 4 insertions(+)
 
 diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
-index 3ea64eba6..557213491 100644
+index 74c286e34..aacf75b13 100644
 --- a/lib/librte_vhost/vhost_user.c
 +++ b/lib/librte_vhost/vhost_user.c
-@@ -489,6 +489,9 @@ qva_to_vva(struct virtio_net *dev, uint64_t qva, uint64_t *len)
+@@ -334,6 +334,9 @@ qva_to_vva(struct virtio_net *dev, uint64_t qva, uint64_t *len)
  	struct rte_vhost_mem_region *r;
  	uint32_t i;
  
@@ -31,7 +32,7 @@
  	/* Find the region where the address lives. */
  	for (i = 0; i < dev->mem->nregions; i++) {
  		r = &dev->mem->regions[i];
-@@ -503,6 +506,7 @@ qva_to_vva(struct virtio_net *dev, uint64_t qva, uint64_t *len)
+@@ -348,6 +351,7 @@ qva_to_vva(struct virtio_net *dev, uint64_t qva, uint64_t *len)
  			       r->host_user_addr;
  		}
  	}


More information about the stable mailing list