aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kerneldevice/mm-kernel-device-udev.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/kerneldevice/mm-kernel-device-udev.c b/src/kerneldevice/mm-kernel-device-udev.c
index ab75aa34..2b2f19cb 100644
--- a/src/kerneldevice/mm-kernel-device-udev.c
+++ b/src/kerneldevice/mm-kernel-device-udev.c
@@ -347,20 +347,25 @@ kernel_device_get_physdev_uid (MMKernelDevice *_self)
self = MM_KERNEL_DEVICE_UDEV (_self);
/* Prefer the one coming in the properties, if any */
- if (self->priv->properties)
- uid = mm_kernel_event_properties_get_uid (MM_KERNEL_DEVICE_UDEV (self)->priv->properties);
-
- if (!uid) {
- ensure_physdev (self);
- if (!self->priv->physdev)
- return NULL;
+ if (self->priv->properties) {
+ if ((uid = mm_kernel_event_properties_get_uid (self->priv->properties)) != NULL)
+ return uid;
+ }
- uid = g_udev_device_get_property (self->priv->physdev, "ID_MM_PHYSDEV_UID");
- if (!uid)
- uid = g_udev_device_get_sysfs_path (self->priv->physdev);
+ ensure_physdev (self);
+ if (self->priv->physdev) {
+ /* Try to load from properties set on the physical device */
+ if ((uid = g_udev_device_get_property (self->priv->physdev, "ID_MM_PHYSDEV_UID")) != NULL)
+ return uid;
+
+ /* Use physical device sysfs path, if any */
+ if ((uid = g_udev_device_get_sysfs_path (self->priv->physdev)) != NULL)
+ return uid;
}
- return uid;
+ /* If there is no physical device sysfs path, use the device sysfs itself */
+ g_assert (self->priv->device);
+ return g_udev_device_get_sysfs_path (self->priv->device);
}
static guint16