aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-03-04 23:48:17 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2024-03-08 15:51:22 +0100
commit44a90c08752ad4ac310b75fe96152d60780bcf7e (patch)
treec27f8d1be0425c9e52c6206236d9870d35d6b98b /util
parentafd1af1c9964335b1482693edbdd4b564c42e269 (diff)
downloadqemu-44a90c08752ad4ac310b75fe96152d60780bcf7e.zip
qemu-44a90c08752ad4ac310b75fe96152d60780bcf7e.tar.gz
qemu-44a90c08752ad4ac310b75fe96152d60780bcf7e.tar.bz2
oslib-posix: fix memory leak in touch_all_pages
touch_all_pages() can return early, before creating threads. In this case, however, it leaks the MemsetContext that it has allocated at the beginning of the function. Reported by Coverity as CID 1534922. Fixes: 04accf43df8 ("oslib-posix: initialize backend memory objects in parallel", 2024-02-06) Reviewed-by: Mark Kanda <mark.kanda@oracle.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'util')
-rw-r--r--util/oslib-posix.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
index 3c379f9..e764416 100644
--- a/util/oslib-posix.c
+++ b/util/oslib-posix.c
@@ -467,11 +467,13 @@ static int touch_all_pages(char *area, size_t hpagesize, size_t numpages,
* preallocating synchronously.
*/
if (context->num_threads == 1 && !async) {
+ ret = 0;
if (qemu_madvise(area, hpagesize * numpages,
QEMU_MADV_POPULATE_WRITE)) {
- return -errno;
+ ret = -errno;
}
- return 0;
+ g_free(context);
+ return ret;
}
touch_fn = do_madv_populate_write_pages;
} else {