vhost: fix dereferencing invalid pointer after realloc
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 dereferences old pointer afterward. This patch prevents this by fetching again the dev pointer in vhost_devices[] after messages have been handled. Fixes: af295ad4698c ("vhost: realloc device and queues to same numa node as vring desc") Cc: stable@dpdk.org Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Yuanhan Liu <yliu@fridaylinux.org>
This commit is contained in:
parent
321203a54b
commit
b0098b5e21
@ -1198,6 +1198,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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user