All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] DMI: allow omitting ident strings in DMI tables
@ 2009-12-03  3:12 Dmitry Torokhov
  2009-12-03  8:30 ` Jean Delvare
  0 siblings, 1 reply; 6+ messages in thread
From: Dmitry Torokhov @ 2009-12-03  3:12 UTC (permalink / raw)
  To: LKML
  Cc: Tejun Heo, Jeff Garzik, Jean Delvare, Rafael J. Wysocki,
	H. Peter Anvin

The purpose of dmi->ident is twofold - it may be used by DMI callback
functions when composing log messages; it is also used to determine
end of DMI table in dmi_check_system() and dmi_first_match(). However,
in case when callbacks are not interested in using ident at all it just
wastes memory. Let's consider entries with empty ident but initialized
first match slot as a valid entry and not as end-of-table marker.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---

CCed a few random people since they touched dmi code in the last few
months...

 drivers/firmware/dmi_scan.c |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)


diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c
index 938100f..9116aa7 100644
--- a/drivers/firmware/dmi_scan.c
+++ b/drivers/firmware/dmi_scan.c
@@ -440,6 +440,15 @@ static bool dmi_matches(const struct dmi_system_id *dmi)
 }
 
 /**
+ *	dmi_is_end_of_table - check for end-of-table marker
+ *	@dmi: pointer to the dmi_system_id structure to check
+ */
+static bool dmi_is_end_of_table(const struct dmi_system_id *dmi)
+{
+	return dmi->ident == NULL && dmi->matches[0].slot == DMI_NONE;
+}
+
+/**
  *	dmi_check_system - check system DMI data
  *	@list: array of dmi_system_id structures to match against
  *		All non-null elements of the list must match
@@ -457,7 +466,7 @@ int dmi_check_system(const struct dmi_system_id *list)
 	int count = 0;
 	const struct dmi_system_id *d;
 
-	for (d = list; d->ident; d++)
+	for (d = list; !dmi_is_end_of_table(d); d++)
 		if (dmi_matches(d)) {
 			count++;
 			if (d->callback && d->callback(d))
@@ -484,7 +493,7 @@ const struct dmi_system_id *dmi_first_match(const struct dmi_system_id *list)
 {
 	const struct dmi_system_id *d;
 
-	for (d = list; d->ident; d++)
+	for (d = list; !dmi_is_end_of_table(d); d++)
 		if (dmi_matches(d))
 			return d;
 
-- 
Dmitry

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-12-04 16:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-12-03  3:12 [PATCH] DMI: allow omitting ident strings in DMI tables Dmitry Torokhov
2009-12-03  8:30 ` Jean Delvare
2009-12-03  8:56   ` Dmitry Torokhov
2009-12-03  9:25     ` Jean Delvare
2009-12-04  7:34       ` Dmitry Torokhov
2009-12-04 16:19         ` Jean Delvare

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.