Peter Maydell <peter.mayd...@linaro.org> writes: > In migrate_get_socket_address() we leak the SocketAddressList: > (cd build/asan && \ > > ASAN_OPTIONS="fast_unwind_on_malloc=0:strip_path_prefix=/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/asan/../../" > QTEST_QEMU_BINARY=./qemu-system-x86_64 \ > ./tests/qtest/migration-test --tap -k -p > /x86_64/migration/multifd/tcp/tls/psk/match ) > > [...] > Direct leak of 16 byte(s) in 1 object(s) allocated from: > #0 0x563d7f22f318 in __interceptor_calloc > (/mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/asan/tests/qtest/migration-test+0x22f318) > (BuildId: 2ad6282fb5d076c863ab87f41a345d46dc965ded) > #1 0x7f9de3b39c50 in g_malloc0 > debian/build/deb/../../../glib/gmem.c:161:13 > #2 0x563d7f3a119c in qobject_input_start_list > qapi/qobject-input-visitor.c:336:17 > #3 0x563d7f390fbf in visit_start_list qapi/qapi-visit-core.c:80:10 > #4 0x563d7f3882ef in visit_type_SocketAddressList > /mnt/nvmedisk/linaro/qemu-from-laptop/qemu/build/asan/qapi/qapi-visit-sockets.c:519:10 > #5 0x563d7f3658c9 in migrate_get_socket_address > tests/qtest/migration-helpers.c:97:5 > #6 0x563d7f362e24 in migrate_get_connect_uri > tests/qtest/migration-helpers.c:111:13 > #7 0x563d7f362bb2 in migrate_qmp tests/qtest/migration-helpers.c:222:23 > #8 0x563d7f3533cd in test_precopy_common > tests/qtest/migration-test.c:1817:5 > #9 0x563d7f34dc1c in test_multifd_tcp_tls_psk_match > tests/qtest/migration-test.c:3185:5 > #10 0x563d7f365337 in migration_test_wrapper > tests/qtest/migration-helpers.c:458:5 > > The code fishes out the SocketAddress from the list to return it, and the > callers are freeing that, but nothing frees the list. > > Since this function is called in only two places, the simple fix is to > make it return the SocketAddressList rather than just a SocketAddress, > and then the callers can easily access the SocketAddress, and free > the whole SocketAddressList when they're done. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
Reviewed-by: Fabiano Rosas <faro...@suse.de>