summaryrefslogtreecommitdiff
path: root/udev_rules.c
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@suse.de>2006-01-31 16:24:22 +0100
committerKay Sievers <kay.sievers@suse.de>2006-01-31 16:24:22 +0100
commitf8db897faaaf3417ed0a31a39c7f47cc8cf40bd6 (patch)
treecf747a85947a1890905286949f4a280006eac442 /udev_rules.c
parent66c2bc212087d02faf77520b52ef6177d5c351fa (diff)
make WAIT_FOR_SYSFS usable in non "wait-only" rules
Thanks to Andrey Borzenkov <arvidjaar@mail.ru> for noticing this and the initial patch to fix it. Signed-off-by: Kay Sievers <kay.sievers@suse.de>
Diffstat (limited to 'udev_rules.c')
-rw-r--r--udev_rules.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/udev_rules.c b/udev_rules.c
index 8e9c1605bf..e9b32df1c6 100644
--- a/udev_rules.c
+++ b/udev_rules.c
@@ -733,19 +733,13 @@ static int match_rule(struct udevice *udev, struct udev_rule *rule)
}
if (rule->wait_for_sysfs.operation != KEY_OP_UNSET) {
- int match;
+ int found;
- match = (wait_for_sysfs(udev, key_val(rule, &rule->wait_for_sysfs), 3) == 0);
- if (match && (rule->wait_for_sysfs.operation != KEY_OP_NOMATCH)) {
- dbg("WAIT_FOR_SYSFS is true (matching value)");
- return 0;
- }
- if (!match && (rule->wait_for_sysfs.operation == KEY_OP_NOMATCH)) {
- dbg("WAIT_FOR_SYSFS is true, (non matching value)");
- return 0;
+ found = (wait_for_sysfs(udev, key_val(rule, &rule->wait_for_sysfs), 3) == 0);
+ if (!found && (rule->wait_for_sysfs.operation != KEY_OP_NOMATCH)) {
+ dbg("WAIT_FOR_SYSFS failed");
+ goto nomatch;
}
- dbg("WAIT_FOR_SYSFS is false");
- return -1;
}
/* walk up the chain of parent devices and find a match */