diff mbox series

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

Message ID 20180730183059.28039-8-colin.king@canonical.com
State Accepted
Headers show
Series abstract _Pragmas and minor changes to build with gcc and clang | expand

Commit Message

Colin Ian King July 30, 2018, 6:30 p.m. UTC
From: Colin Ian King <colin.king@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@canonical.com>
---
 src/dmi/dmicheck/dmicheck.c   | 48 +----------------------------------
 src/lib/include/fwts_smbios.h |  3 +++
 2 files changed, 4 insertions(+), 47 deletions(-)

Comments

Alex Hung July 31, 2018, 12:13 a.m. UTC | #1
On 2018-07-30 11:30 AM, Colin King wrote:
> From: Colin Ian King <colin.king@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@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,
> 

Acked-by: Alex Hung <alex.hung@canonical.com>
Ivan Hu July 31, 2018, 7:51 a.m. UTC | #2
On 07/31/2018 02:30 AM, Colin King wrote:
> From: Colin Ian King <colin.king@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@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,
Acked-by: Ivan Hu <ivan.hu@canonical.com>
diff mbox series

Patch

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,