vslots needs to be freed on error Signed-off-by: Simon Horman <horms@verge.net.au> Index: ioemu-remote/hw/pass-through.c ==================================================================--- ioemu-remote.orig/hw/pass-through.c 2009-02-23 16:57:42.000000000 +1100 +++ ioemu-remote/hw/pass-through.c 2009-02-23 16:57:56.000000000 +1100 @@ -3770,7 +3770,7 @@ int power_off_php_slot(int php_slot) int pt_init(PCIBus *e_bus, const char *direct_pci) { - int seg, b, d, f, php_slot = 0; + int seg, b, d, f, php_slot = 0, status = -1; struct pt_dev *pt_dev; struct pci_access *pci_access; char *vslots; @@ -3814,8 +3814,7 @@ int pt_init(PCIBus *e_bus, const char *d if ( pt_dev == NULL ) { PT_LOG("Error: Registration failed (%02x:%02x.%x)\n", b, d, f); - free(direct_pci_head); - return -1; + goto err; } /* Record the virtual slot info */ @@ -3834,10 +3833,11 @@ int pt_init(PCIBus *e_bus, const char *d /* Write virtual slots info to xenstore for Control panel use */ xenstore_write_vslots(vslots); + status = 0; +err: qemu_free(vslots); free(direct_pci_head); - /* Success */ - return 0; + return status; } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel