[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 2/5] migration: Fix missing rcu_read_unlock
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [PATCH v3 2/5] migration: Fix missing rcu_read_unlock |
Date: |
Fri, 13 Sep 2019 11:25:35 +0100 |
From: "Dr. David Alan Gilbert" <address@hidden>
Use the automatic rcu_read unlocker to fix a missing unlock.
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
---
migration/ram.c | 35 +++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index b2bd618a89..cff35477ec 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3445,28 +3445,27 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
}
(*rsp)->f = f;
- rcu_read_lock();
-
- qemu_put_be64(f, ram_bytes_total_common(true) | RAM_SAVE_FLAG_MEM_SIZE);
+ WITH_RCU_READ_LOCK_GUARD() {
+ qemu_put_be64(f, ram_bytes_total_common(true) |
RAM_SAVE_FLAG_MEM_SIZE);
- RAMBLOCK_FOREACH_MIGRATABLE(block) {
- if (!block->idstr[0]) {
- error_report("%s: RAMBlock with empty name", __func__);
- return -1;
- }
- qemu_put_byte(f, strlen(block->idstr));
- qemu_put_buffer(f, (uint8_t *)block->idstr, strlen(block->idstr));
- qemu_put_be64(f, block->used_length);
- if (migrate_postcopy_ram() && block->page_size != qemu_host_page_size)
{
- qemu_put_be64(f, block->page_size);
- }
- if (migrate_ignore_shared()) {
- qemu_put_be64(f, block->mr->addr);
+ RAMBLOCK_FOREACH_MIGRATABLE(block) {
+ if (!block->idstr[0]) {
+ error_report("%s: RAMBlock with empty name", __func__);
+ return -1;
+ }
+ qemu_put_byte(f, strlen(block->idstr));
+ qemu_put_buffer(f, (uint8_t *)block->idstr, strlen(block->idstr));
+ qemu_put_be64(f, block->used_length);
+ if (migrate_postcopy_ram() && block->page_size !=
+ qemu_host_page_size) {
+ qemu_put_be64(f, block->page_size);
+ }
+ if (migrate_ignore_shared()) {
+ qemu_put_be64(f, block->mr->addr);
+ }
}
}
- rcu_read_unlock();
-
ram_control_before_iterate(f, RAM_CONTROL_SETUP);
ram_control_after_iterate(f, RAM_CONTROL_SETUP);
--
2.21.0
- [Qemu-devel] [PATCH v3 0/5] Automatic RCU read unlock, Dr. David Alan Gilbert (git), 2019/09/13
- [Qemu-devel] [PATCH v3 1/5] rcu: Add automatically released rcu_read_lock variants, Dr. David Alan Gilbert (git), 2019/09/13
- [Qemu-devel] [PATCH v3 2/5] migration: Fix missing rcu_read_unlock,
Dr. David Alan Gilbert (git) <=
- [Qemu-devel] [PATCH v3 3/5] migration: Use automatic rcu_read unlock in ram.c, Dr. David Alan Gilbert (git), 2019/09/13
- [Qemu-devel] [PATCH v3 4/5] migration: Use automatic rcu_read unlock in rdma.c, Dr. David Alan Gilbert (git), 2019/09/13
- [Qemu-devel] [PATCH v3 5/5] rcu: Use automatic rc_read unlock in core memory/exec code, Dr. David Alan Gilbert (git), 2019/09/13
- Re: [Qemu-devel] [PATCH v3 0/5] Automatic RCU read unlock, Dr. David Alan Gilbert, 2019/09/25
- Re: [Qemu-devel] [PATCH v3 0/5] Automatic RCU read unlock, Dr. David Alan Gilbert, 2019/09/25