Since @driver->privateData is modified take the lock.
Reviewed-by: Boris Fiuczynski <fiuczy(a)linux.ibm.com>
Reviewed-by: Jonathon Jongsma <jjongsma(a)redhat.com>
Signed-off-by: Marc Hartmayer <mhartmay(a)linux.ibm.com>
---
src/node_device/node_device_udev.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index 757febffa2f8..281e852c7ff1 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -1481,7 +1481,9 @@ udevRemoveOneDeviceSysPath(const char *path)
virNodeDeviceObjEndAPI(&obj);
/* cannot check for mdev_types since they have already been removed */
- scheduleMdevctlUpdate(driver->privateData, false);
+ VIR_WITH_OBJECT_LOCK_GUARD(driver->privateData) {
+ scheduleMdevctlUpdate(driver->privateData, false);
+ }
virObjectEventStateQueue(driver->nodeDeviceEventState, event);
return 0;
@@ -1615,8 +1617,11 @@ udevAddOneDevice(struct udev_device *device)
has_mdev_types = virNodeDeviceObjHasCap(obj, VIR_NODE_DEV_CAP_MDEV_TYPES);
virNodeDeviceObjEndAPI(&obj);
- if (has_mdev_types)
- scheduleMdevctlUpdate(driver->privateData, false);
+ if (has_mdev_types) {
+ VIR_WITH_OBJECT_LOCK_GUARD(driver->privateData) {
+ scheduleMdevctlUpdate(driver->privateData, false);
+ }
+ }
/* The added mdev needs an immediate active config update before the event
* is issued so that full device information is available at the time that
@@ -2237,7 +2242,9 @@ mdevctlEventHandleCallback(GFileMonitor *monitor G_GNUC_UNUSED,
* configuration change, try to coalesce these changes by waiting for the
* CHANGES_DONE_HINT event. As a fallback, add a timeout to trigger the
* signal if that event never comes */
- scheduleMdevctlUpdate(priv, (event_type == G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT));
+ VIR_WITH_OBJECT_LOCK_GUARD(priv) {
+ scheduleMdevctlUpdate(priv, (event_type ==
G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT));
+ }
}
--
2.34.1