diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2015-07-09 08:47:58 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-07-09 08:47:58 +0200 |
commit | d09a6fde1590ca3a45b608b6873a680f208dfeb5 (patch) | |
tree | 9314bf17c73673d34c162fdf6a2a2e42d75efbe2 /migration/ram.c | |
parent | acf7b7fdf31fa76b53803790917c8acf23a2badb (diff) | |
download | qemu-d09a6fde1590ca3a45b608b6873a680f208dfeb5.zip qemu-d09a6fde1590ca3a45b608b6873a680f208dfeb5.tar.gz qemu-d09a6fde1590ca3a45b608b6873a680f208dfeb5.tar.bz2 |
migration: fix RCU deadlock
migration_end calls synchronize_rcu() within a critical section.
That causes a deadlock; move the call after rcu_read_unlock().
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'migration/ram.c')
-rw-r--r-- | migration/ram.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/migration/ram.c b/migration/ram.c index c696814..1e58cd3 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -1266,9 +1266,10 @@ static int ram_save_complete(QEMUFile *f, void *opaque) flush_compressed_data(f); ram_control_after_iterate(f, RAM_CONTROL_FINISH); - migration_end(); rcu_read_unlock(); + + migration_end(); qemu_put_be64(f, RAM_SAVE_FLAG_EOS); return 0; |