summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2015-07-09 16:22:37 +0100
committerPeter Maydell <peter.maydell@linaro.org>2015-07-09 16:22:37 +0100
commita9dc4cf94c182f03c0061483891f53d1d21e5e68 (patch)
tree46a303e7605560b367d97d237e3088462b05c987
parent032624868df264d395ee9900331f08bad1431022 (diff)
parent4f4f6976d80614e2d81cea4385885876f24bb257 (diff)
downloadqemu-a9dc4cf94c182f03c0061483891f53d1d21e5e68.tar.gz
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
Fixes for two bad bugs. For 2.4-rc0. # gpg: Signature made Thu Jul 9 15:54:19 2015 BST using RSA key ID 78C7AE83 # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini/tags/for-upstream: crypto: fix builtin qcrypto_cipher_free migration: fix RCU deadlock Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--crypto/cipher-builtin.c4
-rw-r--r--migration/ram.c3
2 files changed, 5 insertions, 2 deletions
diff --git a/crypto/cipher-builtin.c b/crypto/cipher-builtin.c
index c625cb40f7..912c1b947d 100644
--- a/crypto/cipher-builtin.c
+++ b/crypto/cipher-builtin.c
@@ -354,11 +354,13 @@ QCryptoCipher *qcrypto_cipher_new(QCryptoCipherAlgorithm alg,
void qcrypto_cipher_free(QCryptoCipher *cipher)
{
- QCryptoCipherBuiltin *ctxt = cipher->opaque;
+ QCryptoCipherBuiltin *ctxt;
+
if (!cipher) {
return;
}
+ ctxt = cipher->opaque;
ctxt->free(cipher);
g_free(cipher);
}
diff --git a/migration/ram.c b/migration/ram.c
index c696814196..1e58cd3924 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;