[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