[PATCH] doCoreDump: fix return value not expect as result

Hao Wang posted 1 patch 3 years, 8 months ago
Test syntax-check failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/2d14812d-5f3c-f7e1-957a-cbb982e76c51@huawei.com
src/qemu/qemu_driver.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
[PATCH] doCoreDump: fix return value not expect as result
Posted by Hao Wang 3 years, 8 months ago
From: Hao Wang <wanghao232@huawei.com>
Subject: [PATCH] doCoreDump: fix return value not expect as result

In a case that qemuDumpToFd() return zero while VIR_CLOSE(fd) fails,
codes will go to "cleanup" with "ret=0", resulting in unexpected return
value. Fix that.

Signed-off-by: Hao Wang <wanghao232@huawei.com>
---
 src/qemu/qemu_driver.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 0f98243fe4..8dfb9a38bf 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -3796,6 +3796,7 @@ doCoreDump(virQEMUDriverPtr driver,
 {
     int fd = -1;
     int ret = -1;
+    int rc = -1;
     virFileWrapperFdPtr wrapperFd = NULL;
     int directFlag = 0;
     unsigned int flags = VIR_FILE_WRAPPER_NON_BLOCKING;
@@ -3843,8 +3844,8 @@ doCoreDump(virQEMUDriverPtr driver,
         if (STREQ(memory_dump_format, "elf"))
             memory_dump_format = NULL;

-        ret = qemuDumpToFd(driver, vm, fd, QEMU_ASYNC_JOB_DUMP,
-                           memory_dump_format);
+        rc = qemuDumpToFd(driver, vm, fd, QEMU_ASYNC_JOB_DUMP,
+                          memory_dump_format);
     } else {
         if (dumpformat != VIR_DOMAIN_CORE_DUMP_FORMAT_RAW) {
             virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s",
@@ -3856,11 +3857,11 @@ doCoreDump(virQEMUDriverPtr driver,
         if (!qemuMigrationSrcIsAllowed(driver, vm, false, 0))
             goto cleanup;

-        ret = qemuMigrationSrcToFile(driver, vm, fd, compressor,
-                                     QEMU_ASYNC_JOB_DUMP);
+        rc = qemuMigrationSrcToFile(driver, vm, fd, compressor,
+                                    QEMU_ASYNC_JOB_DUMP);
     }

-    if (ret < 0)
+    if (rc < 0)
         goto cleanup;

     if (VIR_CLOSE(fd) < 0) {
--
2.23.0

Re: [PATCH] doCoreDump: fix return value not expect as result
Posted by Erik Skultety 3 years, 8 months ago
On Sat, Aug 08, 2020 at 04:19:58PM +0800, Hao Wang wrote:
> From: Hao Wang <wanghao232@huawei.com>
> Subject: [PATCH] doCoreDump: fix return value not expect as result
>
> In a case that qemuDumpToFd() return zero while VIR_CLOSE(fd) fails,
> codes will go to "cleanup" with "ret=0", resulting in unexpected return
> value. Fix that.
>
> Signed-off-by: Hao Wang <wanghao232@huawei.com>
> ---
Reviewed-by: Erik Skultety <eskultet@redhat.com>