On Tue, 30 Jun, at 03:57:51PM, Luck, Tony wrote: > The memory error record structure includes as its first field a > bitmask of which subsequent fields are valid. The allows new fields > to be added to the structure while keeping compatibility with older > software that parses these records. This mechanism was used between > versions 2.2 and 2.3 to add four new fields, growing the size of the > structure from 73 bytes to 80. But Linux just added all the new > fields so this test: > if (gdata->error_data_length >= sizeof(*mem_err)) > cper_print_mem(newpfx, mem_err); > else > goto err_section_too_small; > now make Linux complain about old format records being too short. > > Add a definition for the old format of the structure and use that > for the minimum size check. Pass the actual size to cper_print_mem() > so it can sanity check the validation_bits field to ensure that if > a BIOS using the old format sets bits as if it were new, we won't > access fields beyond the end of the structure. > > Signed-off-by: Tony Luck <tony.luck@xxxxxxxxx> > --- > v1-v2: print FW_WARN if we see bogus validation bits from an old sized structure > > drivers/firmware/efi/cper.c | 15 ++++++++++++--- > include/linux/cper.h | 22 +++++++++++++++++++++- > 2 files changed, 33 insertions(+), 4 deletions(-) Looks good to me Tony. Since this is essentially a bug fix, does it need applying to stable? -- Matt Fleming, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html