[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.
This commit is contained in:
kay.sievers@vrfy.org 2004-12-12 02:03:14 +01:00 committed by Greg KH
parent 79721e0a77
commit 5ce120d366
2 changed files with 8 additions and 7 deletions

View File

@ -39,6 +39,7 @@ static const struct subsystem_file {
const char *subsystem; const char *subsystem;
const char *file; const char *file;
} subsystem_files[] = { } subsystem_files[] = {
{ .subsystem = "class", .file = NULL },
{ .subsystem = "net", .file = "ifindex" }, { .subsystem = "net", .file = "ifindex" },
{ .subsystem = "scsi_host", .file = "unique_id" }, { .subsystem = "scsi_host", .file = "unique_id" },
{ .subsystem = "scsi_device", .file = NULL }, { .subsystem = "scsi_device", .file = NULL },

View File

@ -84,12 +84,6 @@ int main(int argc, char *argv[], char *envp[])
info("looking at '%s'", devpath); 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 */ /* initialize the naming deamon */
namedev_init(); namedev_init();
@ -99,6 +93,12 @@ int main(int argc, char *argv[], char *envp[])
/* fill in values and test_run flag*/ /* fill in values and test_run flag*/
udev_init_device(&udev, devpath, subsystem); 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 */ /* open the device */
snprintf(path, SYSFS_PATH_MAX, "%s%s", sysfs_path, udev.devpath); snprintf(path, SYSFS_PATH_MAX, "%s%s", sysfs_path, udev.devpath);
class_dev = sysfs_open_class_device_path(path); class_dev = sysfs_open_class_device_path(path);
@ -107,7 +107,7 @@ int main(int argc, char *argv[], char *envp[])
return 1; 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 */ /* simulate node creation with test flag */
udev.test_run = 1; udev.test_run = 1;