HPE OEM record type 237 offset 0x09 field was changed from a single byte STRING to a two byte WORD representing date.
Decode both forms of the record based upon record size. Fixes: cdab638dabb7 ("dmioem: Decode HPE OEM Record 237") Signed-off-by: Jerry Hoemann <jerry.hoem...@hpe.com> --- dmioem.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dmioem.c b/dmioem.c index dc4b857..fd6c191 100644 --- a/dmioem.c +++ b/dmioem.c @@ -1094,7 +1094,8 @@ static int dmi_decode_hp(const struct dmi_header *h) * 0x06 | Manufacture|STRING | DIMM Manufacturer * 0x07 | Part Number|STRING | DIMM Manufacturer's Part Number * 0x08 | Serial Num |STRING | DIMM Vendor Serial Number - * 0x09 | Spare Part |STRING | DIMM Spare Part Number + * 0x09 | Spare Part |STRING | DIMM Spare Part Number --OR-- + * 0x09 | Man Date | WORD | DIM Manufacture Date YYWW in BCD */ if (gen < G9) return 0; pr_handle_name("%s DIMM Vendor Information", company); @@ -1106,7 +1107,11 @@ static int dmi_decode_hp(const struct dmi_header *h) if (h->length < 0x09) break; pr_attr("DIMM Vendor Serial Number", "%s", dmi_string(h, data[0x08])); if (h->length < 0x0A) break; - pr_attr("DIMM Spare Part Number", "%s", dmi_string(h, data[0x09])); + if (h->length == 0x0A) + pr_attr("DIMM Spare Part Number", "%s", dmi_string(h, data[0x09])); + if (h->length < 0x0B) break; + if (WORD(data + 0x09)) + pr_attr("DIMM Manufacture Date", "20%02x Week %2x", data[0x09], data[0x0a]); break; case 238: -- 2.39.2