From 696eddc837495363cb1330519c9de76eb43d8dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 19 Sep 2007 21:46:08 +0000 Subject: [PATCH] free ressources on error or uninit for vmware, actually checks if the device was found git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22260 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/graphics/vesa/driver.cpp | 1 + .../kernel/drivers/graphics/vmware/driver.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/add-ons/kernel/drivers/graphics/vesa/driver.cpp b/src/add-ons/kernel/drivers/graphics/vesa/driver.cpp index 8d911bbcfd..7d376b8a67 100644 --- a/src/add-ons/kernel/drivers/graphics/vesa/driver.cpp +++ b/src/add-ons/kernel/drivers/graphics/vesa/driver.cpp @@ -100,6 +100,7 @@ init_driver(void) if (status == B_OK) return B_OK; + free(gDeviceNames[0]); put_module(B_ISA_MODULE_NAME); err1: free(gDeviceInfo[0]); diff --git a/src/add-ons/kernel/drivers/graphics/vmware/driver.c b/src/add-ons/kernel/drivers/graphics/vmware/driver.c index b8e9379d27..8d9023dcb0 100644 --- a/src/add-ons/kernel/drivers/graphics/vmware/driver.c +++ b/src/add-ons/kernel/drivers/graphics/vmware/driver.c @@ -54,7 +54,7 @@ init_hardware(void) status_t init_driver(void) { - status_t ret = B_OK; + status_t ret = ENODEV; int i; TRACE("init_driver\n"); @@ -73,8 +73,16 @@ init_driver(void) /* Remember the PCI information */ for (i = 0; (*gPciBus->get_nth_pci_info)(i, &gPd->pcii) == B_OK; i++) if (gPd->pcii.vendor_id == PCI_VENDOR_ID_VMWARE && - gPd->pcii.device_id == PCI_DEVICE_ID_VMWARE_SVGA2) + gPd->pcii.device_id == PCI_DEVICE_ID_VMWARE_SVGA2) { + ret = B_OK; break; + } + + if (ret != B_OK) { + free(gPd); + put_module(B_PCI_MODULE_NAME); + goto done; + } /* Create a benaphore for exclusive access in OpenHook/FreeHook */ INIT_BEN(gPd->kernel); @@ -116,6 +124,8 @@ void uninit_driver() { TRACE("uninit_driver\n"); + DELETE_BEN(gPd->kernel); + free(gPd->names[0]); free(gPd); put_module(B_PCI_MODULE_NAME); }