|
@@ -429,7 +429,7 @@ static bool dmi_matches(const struct dmi_system_id *dmi)
|
|
|
for (i = 0; i < ARRAY_SIZE(dmi->matches); i++) {
|
|
|
int s = dmi->matches[i].slot;
|
|
|
if (s == DMI_NONE)
|
|
|
- continue;
|
|
|
+ break;
|
|
|
if (dmi_ident[s]
|
|
|
&& strstr(dmi_ident[s], dmi->matches[i].substr))
|
|
|
continue;
|
|
@@ -439,6 +439,15 @@ static bool dmi_matches(const struct dmi_system_id *dmi)
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 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->matches[0].slot == DMI_NONE;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* dmi_check_system - check system DMI data
|
|
|
* @list: array of dmi_system_id structures to match against
|
|
@@ -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;
|
|
|
|