vhost: fix memory leak on realloc failure
When realloc() fails, the original block isn't freed.
Fixes: e246896178
("vhost: get guest/host physical address mappings")
Cc: stable@dpdk.org
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
parent
9303de0c94
commit
e1c0834f95
@ -733,13 +733,16 @@ add_one_guest_page(struct virtio_net *dev, uint64_t guest_phys_addr,
|
||||
uint64_t host_phys_addr, uint64_t size)
|
||||
{
|
||||
struct guest_page *page, *last_page;
|
||||
struct guest_page *old_pages;
|
||||
|
||||
if (dev->nr_guest_pages == dev->max_guest_pages) {
|
||||
dev->max_guest_pages *= 2;
|
||||
old_pages = dev->guest_pages;
|
||||
dev->guest_pages = realloc(dev->guest_pages,
|
||||
dev->max_guest_pages * sizeof(*page));
|
||||
if (!dev->guest_pages) {
|
||||
RTE_LOG(ERR, VHOST_CONFIG, "cannot realloc guest_pages\n");
|
||||
free(old_pages);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user