From 273bebdba66cd5543dc1b076447e3275c81c221c Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 1 Feb 2007 20:23:41 +0100 Subject: [PATCH] exclude parent devices from DRIVER== match We have DRIVERS= for this. --- RELEASE-NOTES | 6 ++++++ udev_rules_parse.c | 15 ++++++--------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index e3aeb68f3..39abb7262 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -1,3 +1,9 @@ +udev 105 +======== +Bugfixes. DRIVER== will match only for devices that actually have +a driver. DRIVERS== must be used, to include the parent devices +in the match. + udev 104 ======== Bugfixes. diff --git a/udev_rules_parse.c b/udev_rules_parse.c index 3f7e43f83..00b53285f 100644 --- a/udev_rules_parse.c +++ b/udev_rules_parse.c @@ -307,15 +307,7 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena } if (strcasecmp(key, "DRIVER") == 0) { - if (operation != KEY_OP_MATCH && - operation != KEY_OP_NOMATCH) { - err("invalid DRIVER operation"); - goto invalid; - } - err("DRIVER== will change in a future relase, " - "please use DRIVERS== in %s:%u", filename, lineno); - /* FIXME: this should be rule->driver to match only the event device */ - add_rule_key(rule, &rule->drivers, operation, value); + add_rule_key(rule, &rule->driver, operation, value); valid = 1; continue; } @@ -369,6 +361,11 @@ static int add_to_rules(struct udev_rules *rules, char *line, const char *filena if (strncasecmp(key, "ATTRS{", sizeof("ATTRS{")-1) == 0 || strncasecmp(key, "SYSFS{", sizeof("SYSFS{")-1) == 0) { + if (operation != KEY_OP_MATCH && + operation != KEY_OP_NOMATCH) { + err("invalid ATTRS operation"); + goto invalid; + } attr = get_key_attribute(key + sizeof("ATTRS")-1); if (attr == NULL) { err("error parsing ATTRS attribute"); -- 2.30.2