From: Zhuang Shengen <zhuangshengen(a)huawei.com>
a removed vm begin a job may cause unanticipated results.so
add judgement in qemuDomainObjBeginJobInternal to forbid
a removed obj acquire the job
Signed-off-by: Zhuang Shengen <zhuangshengen(a)huawei.com>
Reviewed-by: Hogan Wang <hogan.wang(a)huawei.com>
---
src/qemu/qemu_domainjob.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/qemu/qemu_domainjob.c b/src/qemu/qemu_domainjob.c
index 50cfc45f5b..246c3208fc 100644
--- a/src/qemu/qemu_domainjob.c
+++ b/src/qemu/qemu_domainjob.c
@@ -880,6 +880,9 @@ qemuDomainObjBeginJobInternal(virQEMUDriverPtr driver,
if (!nested && !qemuDomainNestedJobAllowed(&priv->job, job))
goto retry;
+ if (obj->removing == 1)
+ goto error;
+
ignore_value(virTimeMillisNow(&now));
if (job) {
@@ -1011,6 +1014,10 @@ qemuDomainObjBeginJobInternal(virQEMUDriverPtr driver,
"due to max_queued limit"));
}
ret = -2;
+ } else if (obj->removing == 1) {
+ virReportError(VIR_ERR_OPERATION_FAILED, "%s",
+ _("cannot acquire job mutex for removed domain"));
+ ret = -2;
} else {
virReportSystemError(errno, "%s", _("cannot acquire job
mutex"));
}
--
2.23.0