[PATCH 9/9] util: Avoid using wrong free function

John Ferlan jferlan at redhat.com
Tue Jun 16 12:07:10 UTC 2020


Since 1e2ae2e31, changes to use the automagic free logic didn't take
into account that one path uses posix_memalign and the other uses
VIR_ALLOC_N - the former requires using VIR_FREE() and not g_free()
to free the memory.

Found by Coverity.

Signed-off-by: John Ferlan <jferlan at redhat.com>
---
 src/util/iohelper.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/util/iohelper.c b/src/util/iohelper.c
index 342bae229b..64b7a13f61 100644
--- a/src/util/iohelper.c
+++ b/src/util/iohelper.c
@@ -45,7 +45,11 @@
 static int
 runIO(const char *path, int fd, int oflags)
 {
+#if HAVE_POSIX_MEMALIGN
+    void *base = NULL; /* Location to be freed */
+#else
     g_autofree void *base = NULL; /* Location to be freed */
+#endif
     char *buf = NULL; /* Aligned location within base */
     size_t buflen = 1024*1024;
     intptr_t alignMask = 64*1024 - 1;
@@ -168,6 +172,9 @@ runIO(const char *path, int fd, int oflags)
     ret = 0;
 
  cleanup:
+#if HAVE_POSIX_MEMALIGN
+    VIR_FREE(base);
+#endif
     if (VIR_CLOSE(fd) < 0 &&
         ret == 0) {
         virReportSystemError(errno, _("Unable to close %s"), path);
-- 
2.25.4




More information about the libvir-list mailing list