diff mbox series

migration: Plug memory leak on HMP migrate error path

Message ID 20240117140722.3979657-1-armbru@redhat.com
State New
Headers show
Series migration: Plug memory leak on HMP migrate error path | expand

Commit Message

Markus Armbruster Jan. 17, 2024, 2:07 p.m. UTC
hmp_migrate() leaks @caps when qmp_migrate() fails.  Plug the leak
with g_autoptr().

Fixes: 967f2de5c9ec (migration: Implement MigrateChannelList to hmp migration flow.) v8.2.0-rc0
Fixes: CID 1533124
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 migration/migration-hmp-cmds.c | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

Comments

Peter Xu Jan. 18, 2024, 6:58 a.m. UTC | #1
On Wed, Jan 17, 2024 at 03:07:22PM +0100, Markus Armbruster wrote:
> hmp_migrate() leaks @caps when qmp_migrate() fails.  Plug the leak
> with g_autoptr().
> 
> Fixes: 967f2de5c9ec (migration: Implement MigrateChannelList to hmp migration flow.) v8.2.0-rc0
> Fixes: CID 1533124
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

queued, thanks!
Peter Maydell Jan. 23, 2024, 4:33 p.m. UTC | #2
On Wed, 17 Jan 2024 at 19:49, Markus Armbruster <armbru@redhat.com> wrote:
>
> hmp_migrate() leaks @caps when qmp_migrate() fails.  Plug the leak
> with g_autoptr().
>
> Fixes: 967f2de5c9ec (migration: Implement MigrateChannelList to hmp migration flow.) v8.2.0-rc0
> Fixes: CID 1533124

Isn't this 1533125 ? 1533124 is a false positive in
the migrate_mode() function.

> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  migration/migration-hmp-cmds.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c
> index 740a219aa4..99b49df5dd 100644
> --- a/migration/migration-hmp-cmds.c
> +++ b/migration/migration-hmp-cmds.c
> @@ -764,7 +764,7 @@ void hmp_migrate(Monitor *mon, const QDict *qdict)
>      bool resume = qdict_get_try_bool(qdict, "resume", false);
>      const char *uri = qdict_get_str(qdict, "uri");
>      Error *err = NULL;
> -    MigrationChannelList *caps = NULL;
> +    g_autoptr(MigrationChannelList) caps = NULL;
>      g_autoptr(MigrationChannel) channel = NULL;
>
>      if (inc) {
> @@ -789,8 +789,6 @@ void hmp_migrate(Monitor *mon, const QDict *qdict)
>          return;
>      }
>
> -    qapi_free_MigrationChannelList(caps);
> -
>      if (!detach) {
>          HMPMigrationStatus *status;

thanks
-- PMM
Peter Xu Jan. 24, 2024, 1:36 a.m. UTC | #3
On Tue, Jan 23, 2024 at 04:33:43PM +0000, Peter Maydell wrote:
> On Wed, 17 Jan 2024 at 19:49, Markus Armbruster <armbru@redhat.com> wrote:
> >
> > hmp_migrate() leaks @caps when qmp_migrate() fails.  Plug the leak
> > with g_autoptr().
> >
> > Fixes: 967f2de5c9ec (migration: Implement MigrateChannelList to hmp migration flow.) v8.2.0-rc0
> > Fixes: CID 1533124
> 
> Isn't this 1533125 ? 1533124 is a false positive in
> the migrate_mode() function.

Indeed.. I fixed it in the staging branch (which will be in the final
pull), thanks.

https://gitlab.com/peterx/qemu/-/commit/74278c11b980429916116baf0f742357af51ebb4
Markus Armbruster Jan. 24, 2024, 6:47 a.m. UTC | #4
Peter Xu <peterx@redhat.com> writes:

> On Tue, Jan 23, 2024 at 04:33:43PM +0000, Peter Maydell wrote:
>> On Wed, 17 Jan 2024 at 19:49, Markus Armbruster <armbru@redhat.com> wrote:
>> >
>> > hmp_migrate() leaks @caps when qmp_migrate() fails.  Plug the leak
>> > with g_autoptr().
>> >
>> > Fixes: 967f2de5c9ec (migration: Implement MigrateChannelList to hmp migration flow.) v8.2.0-rc0
>> > Fixes: CID 1533124
>> 
>> Isn't this 1533125 ? 1533124 is a false positive in
>> the migrate_mode() function.

Yes.

> Indeed.. I fixed it in the staging branch (which will be in the final
> pull), thanks.
>
> https://gitlab.com/peterx/qemu/-/commit/74278c11b980429916116baf0f742357af51ebb4

Thanks for catching & fixing my typo!
diff mbox series

Patch

diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c
index 740a219aa4..99b49df5dd 100644
--- a/migration/migration-hmp-cmds.c
+++ b/migration/migration-hmp-cmds.c
@@ -764,7 +764,7 @@  void hmp_migrate(Monitor *mon, const QDict *qdict)
     bool resume = qdict_get_try_bool(qdict, "resume", false);
     const char *uri = qdict_get_str(qdict, "uri");
     Error *err = NULL;
-    MigrationChannelList *caps = NULL;
+    g_autoptr(MigrationChannelList) caps = NULL;
     g_autoptr(MigrationChannel) channel = NULL;
 
     if (inc) {
@@ -789,8 +789,6 @@  void hmp_migrate(Monitor *mon, const QDict *qdict)
         return;
     }
 
-    qapi_free_MigrationChannelList(caps);
-
     if (!detach) {
         HMPMigrationStatus *status;