qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 3/4] device-core: use atomic_set on .realized property


From: Maxim Levitsky
Subject: [PATCH 3/4] device-core: use atomic_set on .realized property
Date: Thu, 16 Apr 2020 23:36:23 +0300

Some code might race with placement of new devices on a bus.
We currently first place a (unrealized) device on the bus
and then realize it.

As a workaround, users that scan the child device list, can
check the realized property to see if it is safe to access such a device.
Use an atomic write here too to aid with this.

A separate discussion is what to do with devices that are unrealized:
It looks like for this case we only call the hotplug handler's unplug
callback and its up to it to unrealize the device.
An atomic operation doesn't cause harm for this code path though.

Signed-off-by: Maxim Levitsky <address@hidden>
---
 hw/core/qdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index f0c87e582e..bbb1ae3eb3 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -983,7 +983,7 @@ static void device_set_realized(Object *obj, bool value, 
Error **errp)
     }
 
     assert(local_err == NULL);
-    dev->realized = value;
+    atomic_set(&dev->realized, value);
     return;
 
 child_realize_fail:
-- 
2.17.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]