From 5ce120d366b54ea2bae12ec6ce01bb0d38ff1f50 Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Sun, 12 Dec 2004 02:03:14 +0100 Subject: [PATCH] [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. --- udev_sysfs.c | 1 + udevtest.c | 14 +++++++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/udev_sysfs.c b/udev_sysfs.c index ac8e4c106..a4f293ef1 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 38e2bb756..19cf9ec4f 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; -- 2.30.2