[libvirt] [PATCH] opennebula: Fix potential memory/mutex leak in state driver startup
Daniel Veillard
veillard at redhat.com
Sun Nov 8 14:00:16 UTC 2009
On Sun, Nov 08, 2009 at 02:36:36AM +0100, Matthias Bolte wrote:
> In case of an error the domains hash and the driver mutex may leak.
>
> * src/opennebula/one_driver.c: free/destroy domains hash and driver
> mutex in error cases
> ---
> src/opennebula/one_driver.c | 19 +++++++++++--------
> 1 files changed, 11 insertions(+), 8 deletions(-)
>
> diff --git a/src/opennebula/one_driver.c b/src/opennebula/one_driver.c
> index 19a335c..f461ff6 100644
> --- a/src/opennebula/one_driver.c
> +++ b/src/opennebula/one_driver.c
> @@ -617,23 +617,26 @@ static int oneStartup(int privileged ATTRIBUTE_UNUSED){
> return -1;
> }
>
> + c_oneStart();
> + oneDriverLock(one_driver);
> +
> if (virDomainObjListInit(&one_driver->domains) < 0) {
> - virMutexDestroy(&one_driver->lock);
> - VIR_FREE(one_driver);
> - return -1;
> + goto error;
> }
>
> - c_oneStart();
> - oneDriverLock(one_driver);
> one_driver->nextid=1;
> if ((one_driver->caps = oneCapsInit()) == NULL) {
> - oneDriverUnlock(one_driver);
> - VIR_FREE(one_driver);
> - return -1;
> + virReportOOMError(NULL);
> + goto error;
> }
> oneDriverUnlock(one_driver);
>
> return 0;
> +
> +error:
> + oneDriverUnlock(one_driver);
> + oneShutdown();
> + return -1;
> }
>
> static int oneShutdown(void){
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list