summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--RELEASE-NOTES6
-rw-r--r--udev_rules_parse.c15
2 files changed, 12 insertions, 9 deletions
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index e3aeb68f3e..39abb7262c 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 3f7e43f839..00b53285fa 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");