[PATCH] dmi: dmi_decode: DMI not used by kernel should be low failures (LP: #1148703)
Colin King
colin.king at canonical.com
Thu Mar 7 11:05:07 UTC 2013
From: Colin Ian King <colin.king at canonical.com>
The dmi_decode test should report DMI failures as low if the strings are
not being used by the kernel and therefore not causing any real system issues.
This fixes bug LP: #11148703
Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
src/dmi/dmi_decode/dmi_decode.c | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/src/dmi/dmi_decode/dmi_decode.c b/src/dmi/dmi_decode/dmi_decode.c
index e80daaa..15b18b2 100644
--- a/src/dmi/dmi_decode/dmi_decode.c
+++ b/src/dmi/dmi_decode/dmi_decode.c
@@ -299,6 +299,7 @@ static void dmi_str_check_index(fwts_framework *fw,
{
char *data = (char *)hdr->data;
uint8_t i = index;
+ bool used_by_kernel = dmi_used_by_kernel(hdr->type, offset);
if (i > 0) {
int j;
@@ -309,15 +310,18 @@ static void dmi_str_check_index(fwts_framework *fw,
data += strlen(data) + 1;
i--;
}
+
/* Sanity checks */
if (*data == '\0') {
+ int level = used_by_kernel ? LOG_LEVEL_HIGH : LOG_LEVEL_LOW;
+
/* This entry is clearly broken so flag it as a corrupt entry */
- fwts_failed(fw, LOG_LEVEL_HIGH, DMI_STRING_INDEX_OUT_OF_RANGE,
+ fwts_failed(fw, level, DMI_STRING_INDEX_OUT_OF_RANGE,
"Out of range string index 0x%2.2" PRIx8
" while accessing entry '%s' "
"@ 0x%8.8" PRIx32 ", field '%s', offset 0x%2.2" PRIx8,
index, table, addr, field, offset);
- if (dmi_used_by_kernel(hdr->type, offset))
+ if (used_by_kernel)
fwts_advice(fw,
"DMI strings are stored in a manner that uses a special "
"index to fetch the Nth string from the data. For this "
@@ -351,14 +355,17 @@ static void dmi_str_check_index(fwts_framework *fw,
}
}
if (failed != -1) {
- if (dmi_used_by_kernel(hdr->type, offset)) {
- fwts_failed(fw, LOG_LEVEL_MEDIUM, dmi_patterns[j].label,
- "String index 0x%2.2" PRIx8
- " in table entry '%s' @ 0x%8.8" PRIx32
- ", field '%s', offset 0x%2.2" PRIx8
- " has a default value '%s' and probably has "
- "not been updated by the BIOS vendor.",
- index, table, addr, field, offset, data);
+ int level = used_by_kernel ? LOG_LEVEL_MEDIUM : LOG_LEVEL_LOW;
+
+ fwts_failed(fw, level, dmi_patterns[j].label,
+ "String index 0x%2.2" PRIx8
+ " in table entry '%s' @ 0x%8.8" PRIx32
+ ", field '%s', offset 0x%2.2" PRIx8
+ " has a default value '%s' and probably has "
+ "not been updated by the BIOS vendor.",
+ index, table, addr, field, offset, data);
+
+ if (used_by_kernel) {
fwts_advice(fw,
"The DMI table contains data which is clearly been "
"left in a default setting and not been configured "
@@ -370,13 +377,6 @@ static void dmi_str_check_index(fwts_framework *fw,
"is using sane values.");
} else {
/* This string is broken, but we don't care about it too much */
- fwts_failed(fw, LOG_LEVEL_LOW, dmi_patterns[j].label,
- "String index 0x%2.2" PRIx8
- " in table entry '%s' @ 0x%8.8" PRIx32
- ", field '%s', offset 0x%2.2" PRIx8
- " has a default value '%s' and probably has "
- "not been updated by the BIOS vendor.",
- index, table, addr, field, offset, data);
fwts_advice(fw,
"The DMI table contains data which is clearly been "
"left in a default setting and not been configured "
--
1.8.1.2
More information about the fwts-devel
mailing list