* [dpdk-stable] [RFC 14/19] vhost: don't dereference invalid dev pointer after its reallocation
[not found] <20170704094922.11405-1-maxime.coquelin@redhat.com>
@ 2017-07-04 9:49 ` Maxime Coquelin
0 siblings, 0 replies; only message in thread
From: Maxime Coquelin @ 2017-07-04 9:49 UTC (permalink / raw)
To: dev, Yuanhan Liu
Cc: mst, vkaplans, jasowang, jfreiman, Maxime Coquelin, stable
numa_realloc() reallocates the virtio_net device structure and
updates the vhost_devices[] table with the new pointer if the rings
are allocated different NUMA node.
Problem is that vhost_user_msg_handler() still derenferences old
pointer afterward.
This patch prevents this by fetching again the dev pointer in
vhost_devices[] after messages have been handled.
Cc: stable@dpdk.org
Fixes: af295ad4698c ("vhost: realloc device and queues to same numa node as vring desc")
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/librte_vhost/vhost_user.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index e061e85..99ac7d4 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1170,6 +1170,12 @@ vhost_user_msg_handler(int vid, int fd)
}
+ /*
+ * The virtio_net struct might have been reallocated on a different
+ * NUMA node, so dev pointer might no more be valid.
+ */
+ dev = get_device(vid);
+
if (msg.flags & VHOST_USER_NEED_REPLY) {
msg.payload.u64 = !!ret;
msg.size = sizeof(msg.payload.u64);
--
2.9.4
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-07-04 9:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20170704094922.11405-1-maxime.coquelin@redhat.com>
2017-07-04 9:49 ` [dpdk-stable] [RFC 14/19] vhost: don't dereference invalid dev pointer after its reallocation Maxime Coquelin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).