Skip to content

Commit

Permalink
oslib-posix: fix memory leak in touch_all_pages
Browse files Browse the repository at this point in the history
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: 04accf4 ("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>
  • Loading branch information
bonzini committed Mar 5, 2024
1 parent 4ec4bbf commit 76d1d9b
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions util/oslib-posix.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 76d1d9b

Please sign in to comment.