[libvirt] [PATCH v6 5/9] nodedev: udev: Unlock the private data before setting up 'system' node
John Ferlan
jferlan at redhat.com
Wed Oct 18 21:13:41 UTC 2017
On 10/18/2017 09:52 AM, Erik Skultety wrote:
> udevSetupSystemDev only needs the udev data lock to be locked because of
> calling udevGetDMIData which accesses some protected structure members,
> but it can do that on its own just fine, no need to hold the lock the
> whole time.
>
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
> src/node_device/node_device_udev.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
> index e0e5ba799..6882517e6 100644
> --- a/src/node_device/node_device_udev.c
> +++ b/src/node_device/node_device_udev.c
> @@ -1719,6 +1719,7 @@ udevGetDMIData(virNodeDevCapSystemPtr syscap)
> virNodeDevCapSystemHardwarePtr hardware = &syscap->hardware;
> virNodeDevCapSystemFirmwarePtr firmware = &syscap->firmware;
>
> + virObjectLock(priv);
> udev = udev_monitor_get_udev(priv->udev_monitor);
>
> device = udev_device_new_from_syspath(udev, DMI_DEVPATH);
> @@ -1731,6 +1732,7 @@ udevGetDMIData(virNodeDevCapSystemPtr syscap)
virObjectUnlock(priv);
Pesky return statements ;-)
John
> return;
> }
> }
> + virObjectUnlock(priv);
>
> if (udevGetStringSysfsAttr(device, "product_name",
> &syscap->product_name) < 0)
> @@ -1898,11 +1900,11 @@ nodeStateInitialize(bool privileged,
> if (priv->watch == -1)
> goto unlock;
>
> + virObjectUnlock(priv);
> +
> /* Create a fictional 'computer' device to root the device tree. */
> if (udevSetupSystemDev() != 0)
> - goto unlock;
> -
> - virObjectUnlock(priv);
> + goto cleanup;
>
> /* Populate with known devices */
> if (udevEnumerateDevices(udev) != 0)
>
More information about the libvir-list
mailing list