]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: Fix device matching in the accelerometer
authorBastien Nocera <hadess@hadess.net>
Thu, 10 Jan 2013 13:23:23 +0000 (14:23 +0100)
committerKay Sievers <kay@vrfy.org>
Thu, 10 Jan 2013 13:28:48 +0000 (14:28 +0100)
As we were searching by ID_PATH, it would have been possible
for us to find a sibling device instead of the device we were
looking for.

This fixes device matching on the WeTab with the upstream kernel,
as it was trying to use the "Asus Laptop extra buttons" device
instead of the accelerometer.

src/udev/accelerometer/accelerometer.c

index 21f51936eebbb6c13c071ff49ee1763331f69753..2fea3889c777712ac58ebf244b5738da867a6edc 100644 (file)
@@ -257,7 +257,6 @@ int main (int argc, char** argv)
 
         char devpath[PATH_MAX];
         char *devnode;
-        const char *id_path;
         struct udev_enumerate *enumerate;
         struct udev_list_entry *list_entry;
 
@@ -303,18 +302,10 @@ int main (int argc, char** argv)
                 return 1;
         }
 
-        id_path = udev_device_get_property_value(dev, "ID_PATH");
-        if (id_path == NULL) {
-                fprintf (stderr, "unable to get property ID_PATH for '%s'", devpath);
-                return 0;
-        }
-
         /* Get the children devices and find the devnode */
-        /* FIXME: use udev_enumerate_add_match_parent() instead */
         devnode = NULL;
         enumerate = udev_enumerate_new(udev);
-        udev_enumerate_add_match_property(enumerate, "ID_PATH", id_path);
-        udev_enumerate_add_match_subsystem(enumerate, "input");
+        udev_enumerate_add_match_parent(enumerate, dev);
         udev_enumerate_scan_devices(enumerate);
         udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) {
                 struct udev_device *device;