[libvirt] [PATCH] lxc: Fix virLXCDomainObjBeginJob position in lxcDomainSetMemoryParameters

Michal Privoznik mprivozn at redhat.com
Fri May 27 13:26:34 UTC 2016


On 27.05.2016 11:23, Katerina Koukiou wrote:
> Adjust the code to perform the virLXCDomainObjBeginJob first
> and then the call virDomainLiveConfigHelperMethod.
> As Ján Tomko pointed out, in virDomainLiveConfigHelperMethod,
> there is a check to see if the domain is active when AFFECT_LIVE is set.
> Since virLXCDomainObjBeginJob unlocks the virDomainObjPtr lock,
> the domain could possibly be destroyed while we wait for the job
> and the check results would no longer be valid.
> 
> Signed-off-by: Katerina Koukiou <k.koukiou at gmail.com>
> ---
>  src/lxc/lxc_driver.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
> index 3aadd64..f883ffb 100644
> --- a/src/lxc/lxc_driver.c
> +++ b/src/lxc/lxc_driver.c
> @@ -841,14 +841,16 @@ lxcDomainSetMemoryParameters(virDomainPtr dom,
>      cfg = virLXCDriverGetConfig(driver);
>  
>      if (virDomainSetMemoryParametersEnsureACL(dom->conn, vm->def, flags) < 0 ||
> -        !(caps = virLXCDriverGetCapabilities(driver, false)) ||
> -        virDomainLiveConfigHelperMethod(caps, driver->xmlopt,
> -                                        vm, &flags, &vmdef) < 0)
> +        !(caps = virLXCDriverGetCapabilities(driver, false)))
>          goto cleanup;
>  
>      if (virLXCDomainObjBeginJob(driver, vm, LXC_JOB_MODIFY) < 0)
>          goto cleanup;
>  
> +    if (virDomainLiveConfigHelperMethod(caps, driver->xmlopt,
> +                                        vm, &flags, &vmdef) < 0)
> +        goto endjob;
> +
>      if (flags & VIR_DOMAIN_AFFECT_LIVE &&
>          !virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_MEMORY)) {
>          virReportError(VIR_ERR_OPERATION_INVALID,
> 

ACKed and pushed.

Michal




More information about the libvir-list mailing list