提交 4c1033a1 编写于 作者: M Michal Privoznik

udevRemoveOneDevice: Unlock node device obj upon return

When removing a node device object from the internal list the
udevRemoveOneDevice() function does plain unref over the object.
This is not sufficient. If there is another thread that's waiting
for the object lock it will wait forever.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 c740ae69
...@@ -1244,7 +1244,7 @@ udevRemoveOneDevice(struct udev_device *device) ...@@ -1244,7 +1244,7 @@ udevRemoveOneDevice(struct udev_device *device)
VIR_DEBUG("Removing device '%s' with sysfs path '%s'", VIR_DEBUG("Removing device '%s' with sysfs path '%s'",
def->name, name); def->name, name);
virNodeDeviceObjListRemove(driver->devs, obj); virNodeDeviceObjListRemove(driver->devs, obj);
virObjectUnref(obj); virNodeDeviceObjEndAPI(&obj);
virObjectEventStateQueue(driver->nodeDeviceEventState, event); virObjectEventStateQueue(driver->nodeDeviceEventState, event);
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册