[PATCH 7/7] dmi: dmicheck: remove redundant array fwts_dmi_chassis_type

Colin King colin.king at canonical.com
Mon Jul 30 18:30:59 UTC 2018


From: Colin Ian King <colin.king at canonical.com>

Array fwts_dmi_chassis_type is only being used to find the
maximum number of chassis types. Remove this array and the
fwts_chassis_type_map struct declaration and replace with
a macro for the maximum number of chassis types.

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/dmi/dmicheck/dmicheck.c   | 48 +----------------------------------
 src/lib/include/fwts_smbios.h |  3 +++
 2 files changed, 4 insertions(+), 47 deletions(-)

diff --git a/src/dmi/dmicheck/dmicheck.c b/src/dmi/dmicheck/dmicheck.c
index a911b437..89288ade 100644
--- a/src/dmi/dmicheck/dmicheck.c
+++ b/src/dmi/dmicheck/dmicheck.c
@@ -77,11 +77,6 @@ typedef struct {
 	uint16_t   new;
 } fwts_dmi_version;
 
-typedef struct {
-	const char *name;
-	uint8_t   original;
-} fwts_chassis_type_map;
-
 typedef struct {
 	uint8_t	type;
 	uint8_t	offset;
@@ -212,46 +207,6 @@ static const char *uuid_patterns[] = {
 	NULL,
 };
 
-static const fwts_chassis_type_map fwts_dmi_chassis_type[] = {
-	{ "Invalid",		FWTS_SMBIOS_CHASSIS_INVALID },
-	{ "Other",		FWTS_SMBIOS_CHASSIS_OTHER },
-	{ "Unknown",		FWTS_SMBIOS_CHASSIS_UNKNOWN },
-	{ "Desktop",		FWTS_SMBIOS_CHASSIS_DESKTOP },
-	{ "Low Profile Desktop",FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP },
-	{ "Pizza Box",		FWTS_SMBIOS_CHASSIS_PIZZA_BOX },
-	{ "Mini Tower",		FWTS_SMBIOS_CHASSIS_MINI_TOWER },
-	{ "Chassis Tower",	FWTS_SMBIOS_CHASSIS_TOWER },
-	{ "Portable",		FWTS_SMBIOS_CHASSIS_PORTABLE },
-	{ "Laptop",		FWTS_SMBIOS_CHASSIS_LAPTOP },
-	{ "Notebook",		FWTS_SMBIOS_CHASSIS_NOTEBOOK },
-	{ "Handheld",		FWTS_SMBIOS_CHASSIS_HANDHELD },
-	{ "Docking Station",	FWTS_SMBIOS_CHASSIS_DOCKING_STATION },
-	{ "All In One",		FWTS_SMBIOS_CHASSIS_ALL_IN_ONE },
-	{ "Sub Notebook",	FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK },
-	{ "Space Saving",	FWTS_SMBIOS_CHASSIS_SPACE_SAVING },
-	{ "Lunch Box",		FWTS_SMBIOS_CHASSIS_LUNCH_BOX},
-	{ "Server Chassis",	FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS },
-	{ "Expansion Chassis",	FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS },
-	{ "Sub Chassis",	FWTS_SMBIOS_CHASSIS_SUB_CHASSIS },
-	{ "Bus Expansion Chassis", FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS },
-	{ "Peripheral Chassis",	FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS },
-	{ "Raid Chassis",	FWTS_SMBIOS_CHASSIS_RAID_CHASSIS },
-	{ "Rack Mount Chassis",	FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS },
-	{ "Sealed Case PC",	FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC },
-	{ "Multi System Chassis",FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS },
-	{ "Compact PCI",	FWTS_SMBIOS_CHASSIS_COMPACT_PCI },
-	{ "Advanced TCA",	FWTS_SMBIOS_CHASSIS_ADVANCED_TCA },
-	{ "Blade",		FWTS_SMBIOS_CHASSIS_BLADE },
-	{ "Enclosure",		FWTS_SMBIOS_CHASSIS_BLADE_ENCLOSURE },
-	{ "Tablet",		FWTS_SMBIOS_CHASSIS_TABLET },
-	{ "Convertible",	FWTS_SMBIOS_CHASSIS_CONVERTIBLE },
-	{ "Detachable",		FWTS_SMBIOS_CHASSIS_DETACHABLE },
-	{ "IoT Gateway",	FWTS_SMBIOS_CHASSIS_IOT_GATEWAY },
-	{ "Embedded PC",	FWTS_SMBIOS_CHASSIS_EMBEDDED_PC },
-	{ "Mini PC",		FWTS_SMBIOS_CHASSIS_MINI_PC },
-	{ "Stick PC",		FWTS_SMBIOS_CHASSIS_STICK_PC },
-};
-
 /* Remapping table from buggy version numbers to correct values */
 static const fwts_dmi_version dmi_versions[] = {
 	{ 0x021f, 0x0203 },
@@ -1180,8 +1135,7 @@ static void dmicheck_entry(fwts_framework *fw,
 			dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4);
 			dmi_min_max_mask_uint8_check(fw, table, addr, "Chassis Type", hdr, 0x5, 0x1, 0x24, 0x0, 0x7f);
 
-			if ((data[5] & ~0x80) >=
-				(sizeof(fwts_dmi_chassis_type) / sizeof(fwts_chassis_type_map))) {
+			if ((data[5] & ~0x80) > FWTS_SMBIOS_CHASSIS_MAX) {
 				fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY,
 					"Incorrect Chassis Type "
 					"SMBIOS Type 3 reports 0x%" PRIx8,
diff --git a/src/lib/include/fwts_smbios.h b/src/lib/include/fwts_smbios.h
index a8bbf08b..f977bb8e 100644
--- a/src/lib/include/fwts_smbios.h
+++ b/src/lib/include/fwts_smbios.h
@@ -65,6 +65,9 @@
 #define FWTS_SMBIOS_CHASSIS_MINI_PC			(0x23)
 #define FWTS_SMBIOS_CHASSIS_STICK_PC			(0x24)
 
+/* Always update this to the last FWTS_SMBIOS_CHASSIS type */
+#define FWTS_SMBIOS_CHASSIS_MAX				(FWTS_SMBIOS_CHASSIS_STICK_PC)
+
 typedef enum {
 	FWTS_SMBIOS_UNKNOWN = -1,
 	FWTS_SMBIOS_DMI_LEGACY = 0,
-- 
2.17.1




More information about the fwts-devel mailing list