[libvirt PATCH] qemu: Lock vm object in qemuProcessHandleMemoryFailure

Jiri Denemark posted 1 patch 1 year, 11 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/78db58aa254a69acef7dd527e8a2d35574c8c175.1653396163.git.jdenemar@redhat.com
src/qemu/qemu_process.c | 5 +++++
1 file changed, 5 insertions(+)
[libvirt PATCH] qemu: Lock vm object in qemuProcessHandleMemoryFailure
Posted by Jiri Denemark 1 year, 11 months ago
This event handler was accessing a vm object without locking it first.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
 src/qemu/qemu_process.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 033d3d5bc6..6f70d5d065 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -1773,6 +1773,8 @@ qemuProcessHandleMemoryFailure(qemuMonitor *mon G_GNUC_UNUSED,
     virDomainMemoryFailureActionType action;
     unsigned int flags = 0;
 
+    virObjectLock(vm);
+
     switch (mfp->recipient) {
     case QEMU_MONITOR_MEMORY_FAILURE_RECIPIENT_HYPERVISOR:
         recipient = VIR_DOMAIN_EVENT_MEMORY_FAILURE_RECIPIENT_HYPERVISOR;
@@ -1809,6 +1811,9 @@ qemuProcessHandleMemoryFailure(qemuMonitor *mon G_GNUC_UNUSED,
         flags |= VIR_DOMAIN_MEMORY_FAILURE_RECURSIVE;
 
     event = virDomainEventMemoryFailureNewFromObj(vm, recipient, action, flags);
+
+    virObjectUnlock(vm);
+
     virObjectEventStateQueue(driver->domainEventState, event);
 }
 
-- 
2.35.1
Re: [libvirt PATCH] qemu: Lock vm object in qemuProcessHandleMemoryFailure
Posted by Jiri Denemark 1 year, 11 months ago
On Tue, May 24, 2022 at 14:42:43 +0200, Jiri Denemark wrote:
> This event handler was accessing a vm object without locking it first.

Actually this is not the only case. I'll send them all in a single
patch. Please, ignore this one.

Jirka