mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-03 15:47:36 +00:00
xenbus_client.c: correct exit path for xenbus_map_ring_valloc_hvm
Apparently we should not free page that has not been allocated. This is b/c alloc_xenballooned_pages will take care of freeing the page on its own. Signed-off-by: Wei Liu <wei.liu2@citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
parent
d69c0e3975
commit
8d0b8801c9
1 changed files with 3 additions and 2 deletions
|
@ -534,7 +534,7 @@ static int xenbus_map_ring_valloc_hvm(struct xenbus_device *dev,
|
||||||
|
|
||||||
err = xenbus_map_ring(dev, gnt_ref, &node->handle, addr);
|
err = xenbus_map_ring(dev, gnt_ref, &node->handle, addr);
|
||||||
if (err)
|
if (err)
|
||||||
goto out_err;
|
goto out_err_free_ballooned_pages;
|
||||||
|
|
||||||
spin_lock(&xenbus_valloc_lock);
|
spin_lock(&xenbus_valloc_lock);
|
||||||
list_add(&node->next, &xenbus_valloc_pages);
|
list_add(&node->next, &xenbus_valloc_pages);
|
||||||
|
@ -543,8 +543,9 @@ static int xenbus_map_ring_valloc_hvm(struct xenbus_device *dev,
|
||||||
*vaddr = addr;
|
*vaddr = addr;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
out_err:
|
out_err_free_ballooned_pages:
|
||||||
free_xenballooned_pages(1, &node->page);
|
free_xenballooned_pages(1, &node->page);
|
||||||
|
out_err:
|
||||||
kfree(node);
|
kfree(node);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue