X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=drivers%2Fxen%2Fxenbus%2Fxenbus_client.c;h=ec097d6f964dab5e695ff9abdf818581b3473e74;hb=3b285cb2f7da913bb27017b6964b3c5b052c543b;hp=61786be9138b96877ccadce65642a4590eddead1;hpb=af788e35bff2b98a413c3e81b13c2a27ef6b7528;p=~andy%2Flinux diff --git a/drivers/xen/xenbus/xenbus_client.c b/drivers/xen/xenbus/xenbus_client.c index 61786be9138..ec097d6f964 100644 --- a/drivers/xen/xenbus/xenbus_client.c +++ b/drivers/xen/xenbus/xenbus_client.c @@ -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); if (err) - goto out_err; + goto out_err_free_ballooned_pages; spin_lock(&xenbus_valloc_lock); list_add(&node->next, &xenbus_valloc_pages); @@ -543,8 +543,9 @@ static int xenbus_map_ring_valloc_hvm(struct xenbus_device *dev, *vaddr = addr; return 0; - out_err: + out_err_free_ballooned_pages: free_xenballooned_pages(1, &node->page); + out_err: kfree(node); return err; }