'channel' and 'addr' in qmp_migrate() and qmp_migrate_incoming() are not auto-freed. migrate_uri_parse() allocates memory which is returned to 'channel', which is leaked because there is no code for freeing 'channel' or 'addr'. So, free addr and channel to avoid memory leak. 'addr' does shallow copying of channel->addr, hence free 'channel' itself and deep free contents of 'addr'
Fixes: 5994024f ("migration: Implement MigrateChannelList to qmp migration flow") Signed-off-by: Het Gala <het.g...@nutanix.com> --- migration/migration.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index 28a34c9068..29efb51b62 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2004,6 +2004,8 @@ void qmp_migrate(const char *uri, bool has_channels, MIGRATION_STATUS_FAILED); block_cleanup_parameters(); } + g_free(channel); + qapi_free_MigrationAddress(addr); if (local_err) { if (!resume_requested) { -- 2.22.3