aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-12-12 02:03:14 +0100
committerGreg KH <gregkh@suse.de>2005-04-26 23:13:47 -0700
commit5ce120d366b54ea2bae12ec6ce01bb0d38ff1f50 (patch)
tree504f3304ed48dc50ff4c8ba37099a1eccd6a88e9
parent79721e0a7770b1a5874ef96cbf93a4c6bd19e138 (diff)
downloadudev-5ce120d366b54ea2bae12ec6ce01bb0d38ff1f50.tar.gz
[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.c1
-rw-r--r--udevtest.c14
2 files changed, 8 insertions, 7 deletions
diff --git a/udev_sysfs.c b/udev_sysfs.c
index ac8e4c10..a4f293ef 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 38e2bb75..19cf9ec4 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;