chiark / gitweb /
[PATCH] prevent udev node creatinon for "class" registration
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>
Sun, 12 Dec 2004 01:03:14 +0000 (02:03 +0100)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 06:13:47 +0000 (23:13 -0700)
I've found a /dev/video4linux node and just realized, that libsysfs
searches all subdirs for an attribute name.
So it found /class/video4linux/video0/dev for the videodev class
creation event /class/video4linux and created a node.

Just ignore the SUBSYSTEM="class" events now.

udev_sysfs.c
udevtest.c

index ac8e4c10600d26c0b47d444ec93dc7244ea3a4a2..a4f293ef1395a6ee622d7845d1335dbd7de29635 100644 (file)
@@ -39,6 +39,7 @@ static const struct subsystem_file {
        const char *subsystem;
        const char *file;
 } subsystem_files[] = {
+       { .subsystem = "class",         .file = NULL },
        { .subsystem = "net",           .file = "ifindex" },
        { .subsystem = "scsi_host",     .file = "unique_id" },
        { .subsystem = "scsi_device",   .file = NULL },
index 38e2bb7562348c54168050a5d8de932d13228bf8..19cf9ec4f41aa66cc02443a257a99b9142e14453 100644 (file)
@@ -84,12 +84,6 @@ int main(int argc, char *argv[], char *envp[])
 
        info("looking at '%s'", devpath);
 
-       /* we only care about class devices and block stuff */
-       if (!strstr(devpath, "class") && !strstr(devpath, "block")) {
-               dbg("not a block or class device");
-               return 2;
-       }
-
        /* initialize the naming deamon */
        namedev_init();
 
@@ -99,6 +93,12 @@ int main(int argc, char *argv[], char *envp[])
        /* fill in values and test_run flag*/
        udev_init_device(&udev, devpath, subsystem);
 
+       /* skip subsystems without "dev", but handle net devices */
+       if (udev.type != 'n' && subsystem_expect_no_dev(udev.subsystem)) {
+               info("don't care about '%s' devices", udev.subsystem);
+               return 2;
+       }
+
        /* open the device */
        snprintf(path, SYSFS_PATH_MAX, "%s%s", sysfs_path, udev.devpath);
        class_dev = sysfs_open_class_device_path(path);
@@ -107,7 +107,7 @@ int main(int argc, char *argv[], char *envp[])
                return 1;
        }
 
-       dbg("opened class_dev->name='%s'", class_dev->name);
+       info("opened class_dev->name='%s'", class_dev->name);
 
        /* simulate node creation with test flag */
        udev.test_run = 1;