Messages in this thread Patch in this message | | | Subject | [patch] fix: dmi_check_system | From | Robert Love <> | Date | Mon, 29 Aug 2005 14:43:15 -0400 |
| |
Background:
1) dmi_check_system() returns the count of the number of matches. Zero thus means no matches. 2) A match callback can return nonzero to stop the match checking.
Bug: The count is incremented after we check for the nonzero return value, so it does not reflect the actual count. We could say this is intended, for some dumb reason, except that it means that a match on the first check returns zero--no matches--if the callback returns nonzero.
Attached patch implements the count before calling the callback and thus before potentially short-circuiting.
Robert Love
Signed-off-by: Robert Love <rml@novell.com>
arch/i386/kernel/dmi_scan.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-)
diff -urN linux-2.6.13/arch/i386/kernel/dmi_scan.c linux/arch/i386/kernel/dmi_scan.c --- linux-2.6.13/arch/i386/kernel/dmi_scan.c 2005-08-29 14:28:33.000000000 -0400 +++ linux/arch/i386/kernel/dmi_scan.c 2005-08-29 14:35:06.000000000 -0400 @@ -218,9 +218,9 @@ /* No match */ goto fail; } + count++; if (d->callback && d->callback(d)) break; - count++; fail: d++; }
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |