Re: [PATCH 1/1] qemu_domain: fix vcpu hotunplug race by locking vcpupriv

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 24, 2024 at 14:31:10 +0530, Shaleen Bathla via Devel wrote:
> multiple parallel timedout vcpu hotunplug requests coming from qemu handled
> asynchronously by libvirt can cause data corruption as they modify
> vcpu data during refresh by libvirt.

Could you please elaborate? which two code paths hit this? Could you
please provide stack traces?


> Lock each vcpu before modification and then release the lock
> 
> Signed-off-by: Shaleen Bathla <shaleen.bathla@xxxxxxxxxx>
> ---
>  src/qemu/qemu_domain.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> index 3469f0d40c59..15ec1b0a771a 100644
> --- a/src/qemu/qemu_domain.c
> +++ b/src/qemu/qemu_domain.c
> @@ -10084,6 +10084,7 @@ qemuDomainRefreshVcpuInfo(virDomainObj *vm,
>      for (i = 0; i < maxvcpus; i++) {
>          vcpu = virDomainDefGetVcpu(vm->def, i);
>          vcpupriv = QEMU_DOMAIN_VCPU_PRIVATE(vcpu);
> +        virObjectLock(vcpupriv);

'qemuDomainVcpuPrivate' is a 'virObject' not a 'virObjectLockable' so
this doesn't work. In fact it does nothing as virObjectLock is a no-op
(apart from printing a warning of incorrect use) if the object is not
lockable.

The vcpu private data are supposed to be guarded by the lock on the
domain object along with a modification job.
_______________________________________________
Devel mailing list -- devel@xxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxx




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux