aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/dmi_scan.c
diff options
context:
space:
mode:
authorRobert Love <rml@novell.com>2005-09-06 18:18:30 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-07 19:57:44 -0400
commit640e803376b9c4072f69fec42e304c974a631298 (patch)
tree7e3976e7e2a76b857d3087821366dad89691ceeb /arch/i386/kernel/dmi_scan.c
parentebad6a4230bdb5927495e28bc7837f515bf667a7 (diff)
[PATCH] fix: dmi_check_system
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. Signed-off-by: Robert Love <rml@novell.com> Cc: Andrey Panin <pazke@donpac.ru> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/i386/kernel/dmi_scan.c')
-rw-r--r--arch/i386/kernel/dmi_scan.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/i386/kernel/dmi_scan.c b/arch/i386/kernel/dmi_scan.c
index c4a73855e38c..58516e2ac172 100644
--- a/arch/i386/kernel/dmi_scan.c
+++ b/arch/i386/kernel/dmi_scan.c
@@ -248,9 +248,9 @@ int dmi_check_system(struct dmi_system_id *list)
248 /* No match */ 248 /* No match */
249 goto fail; 249 goto fail;
250 } 250 }
251 count++;
251 if (d->callback && d->callback(d)) 252 if (d->callback && d->callback(d))
252 break; 253 break;
253 count++;
254fail: d++; 254fail: d++;
255 } 255 }
256 256