[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