From: Michal Privoznik Date: Tue, 13 Apr 2021 08:52:07 +0000 (+0200) Subject: nodedev: Signal initCond with driver locked X-Git-Tag: v7.3.0-rc1~227 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b56a288cab097896832dc9d4acb7f23dfca377c;p=thirdparty%2Flibvirt.git nodedev: Signal initCond with driver locked This is more academic dispute than a real bug, but this is taken from pthread_cond_broadcast(3p) man: The pthread_cond_broadcast() or pthread_cond_signal() functions may be called by a thread whether or not it currently owns the mutex that threads calling pthread_cond_wait() or pthread_cond_timedwait() have associated with the condition variable during their waits; however, if predictable scheduling behavior is required, then that mutex shall be locked by the thread calling pthread_cond_broadcast() or pthread_cond_signal(). Therefore, broadcast the initCond while the nodedev driver is still locked. Signed-off-by: Michal Privoznik Reviewed-by: Erik Skultety --- diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c index 325ec5b034..84785d9e1e 100644 --- a/src/node_device/node_device_udev.c +++ b/src/node_device/node_device_udev.c @@ -1984,8 +1984,8 @@ nodeStateInitializeEnumerate(void *opaque) nodeDeviceLock(); driver->initialized = true; - nodeDeviceUnlock(); virCondBroadcast(&driver->initCond); + nodeDeviceUnlock(); return;