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 |
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>
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 --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,