On Fri, Oct 12, 2018 at 02:29:37PM -0500, Jeremy Linton wrote: > The BAD_MADT_GICC_ENTRY check is a little too strict because > it rejects MADT entries that don't match the currently known > lengths. We should remove this restriction to avoid problems > if the table length changes. Future code which might depend on > additional fields should be written to validate those fields > before using them, rather than trying to globally check > known MADT version lengths. > > Signed-off-by: Jeremy Linton <jeremy.linton@xxxxxxx> > --- > arch/arm64/include/asm/acpi.h | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h > index 709208dfdc8b..4d0946bd485a 100644 > --- a/arch/arm64/include/asm/acpi.h > +++ b/arch/arm64/include/asm/acpi.h > @@ -22,12 +22,12 @@ > #include <asm/tlbflush.h> > > /* Macros for consistency checks of the GICC subtable of MADT */ > -#define ACPI_MADT_GICC_LENGTH \ > - (acpi_gbl_FADT.header.revision < 6 ? 76 : 80) > +#define ACPI_MADT_GICC_MIN_LENGTH ACPI_OFFSET( \ > + struct acpi_madt_generic_interrupt, efficiency_class) > This makes it 76 always which is fine, just that the first user of efficiency_class should check for the length before accessing it. No user of efficiency_class yet, so I am fine with this change. > #define BAD_MADT_GICC_ENTRY(entry, end) \ > - (!(entry) || (entry)->header.length != ACPI_MADT_GICC_LENGTH || \ > - (unsigned long)(entry) + ACPI_MADT_GICC_LENGTH > (end)) > + (!(entry) || (entry)->header.length < ACPI_MADT_GICC_MIN_LENGTH || \ > + (unsigned long)(entry) + (entry)->header.length > (end)) > Acked-by: Sudeep Holla <sudeep.holla@xxxxxxx> -- Regards, Sudeep