Fixed assert in vhost_user_set_mem_table_postcopy
commitb844a4c77b618acfba6b3f4ce12d2ad709f99279
authorRaphael Norwitz <raphael.norwitz@nutanix.com>
Thu, 16 Jan 2020 02:57:04 +0000 (15 21:57 -0500)
committerMichael S. Tsirkin <mst@redhat.com>
Thu, 27 Feb 2020 08:46:10 +0000 (27 03:46 -0500)
tree7dde6573935f4ff82ca2de15b8a71acd65033ffa
parent67b3965e89f8466fc6a61caa2142dd2c89257383
Fixed assert in vhost_user_set_mem_table_postcopy

The current vhost_user_set_mem_table_postcopy() implementation
populates each region of the VHOST_USER_SET_MEM_TABLE message without
first checking if there are more than VHOST_MEMORY_MAX_NREGIONS already
populated. This can cause memory corruption if too many regions are
added to the message during the postcopy step.

This change moves an existing assert up such that attempting to
construct a VHOST_USER_SET_MEM_TABLE message with too many memory
regions will gracefully bring down qemu instead of corrupting memory.

Signed-off-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
Signed-off-by: Peter Turschmid <peter.turschm@nutanix.com>
Message-Id: <1579143426-18305-2-git-send-email-raphael.norwitz@nutanix.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
hw/virtio/vhost-user.c