aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Straub <lukasstraub2@web.de>2021-09-09 09:19:45 +0200
committerJuan Quintela <quintela@redhat.com>2021-10-19 08:39:04 +0200
commite9ab82b858c14aa76dac5235a99d1723ec069407 (patch)
tree0c572d9e4a79c05379c31c4b7377f4da6969f194
parent20171ea8950c619f00dc5cfa6136fd489998ffc5 (diff)
downloadqemu-e9ab82b858c14aa76dac5235a99d1723ec069407.zip
qemu-e9ab82b858c14aa76dac5235a99d1723ec069407.tar.gz
qemu-e9ab82b858c14aa76dac5235a99d1723ec069407.tar.bz2
multifd: Unconditionally unregister yank function
To: qemu-devel <qemu-devel@nongnu.org> Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Juan Quintela <quintela@redhat.com>, Peter Xu <peterx@redhat.com>, Leonardo Bras Soares Passos <lsoaresp@redhat.com> Date: Wed, 4 Aug 2021 21:26:32 +0200 (5 weeks, 11 hours, 52 minutes ago) [[PGP Signed Part:No public key for 35AB0B289C5DB258 created at 2021-08-04T21:26:32+0200 using RSA]] Unconditionally unregister yank function in multifd_load_cleanup(). If it is not unregistered here, it will leak and cause a crash in yank_unregister_instance(). Now if the ioc is still in use afterwards, it will only lead to qemu not being able to recover from a hang related to that ioc. After checking the code, i am pretty sure that ref is always 1 when arriving here. So all this currently does is remove the unneeded check. Signed-off-by: Lukas Straub <lukasstraub2@web.de> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
-rw-r--r--migration/multifd.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/migration/multifd.c b/migration/multifd.c
index 5a4f158..efd424b 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -991,10 +991,7 @@ int multifd_load_cleanup(Error **errp)
for (i = 0; i < migrate_multifd_channels(); i++) {
MultiFDRecvParams *p = &multifd_recv_state->params[i];
- if (OBJECT(p->c)->ref == 1) {
- migration_ioc_unregister_yank(p->c);
- }
-
+ migration_ioc_unregister_yank(p->c);
object_unref(OBJECT(p->c));
p->c = NULL;
qemu_mutex_destroy(&p->mutex);