diff options
author | kay.sievers@vrfy.org <kay.sievers@vrfy.org> | 2004-12-12 02:03:14 +0100 |
---|---|---|
committer | Greg KH <gregkh@suse.de> | 2005-04-26 23:13:47 -0700 |
commit | 5ce120d366b54ea2bae12ec6ce01bb0d38ff1f50 (patch) | |
tree | 504f3304ed48dc50ff4c8ba37099a1eccd6a88e9 | |
parent | 79721e0a7770b1a5874ef96cbf93a4c6bd19e138 (diff) |
[PATCH] prevent udev node creatinon for "class" registration
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.
-rw-r--r-- | udev_sysfs.c | 1 | ||||
-rw-r--r-- | udevtest.c | 14 |
2 files changed, 8 insertions, 7 deletions
diff --git a/udev_sysfs.c b/udev_sysfs.c index ac8e4c1060..a4f293ef13 100644 --- a/udev_sysfs.c +++ b/udev_sysfs.c @@ -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 }, diff --git a/udevtest.c b/udevtest.c index 38e2bb7562..19cf9ec4f4 100644 --- a/udevtest.c +++ b/udevtest.c @@ -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; |