X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Facpi%2Ftables.c;h=d87764ebdd13fd02c0eaf5f3b00a7dcb7bd8c961;hb=918425d07b2fe2087ee7dabf90e69a17e914649c;hp=621640e8075a1d565d78b610a0b8429ae7acc95f;hpb=86090fcac5e27b630656fe3d963a6b80e26dac44;p=linux-2.6.git diff --git a/drivers/acpi/tables.c b/drivers/acpi/tables.c index 621640e80..d87764ebd 100644 --- a/drivers/acpi/tables.c +++ b/drivers/acpi/tables.c @@ -343,10 +343,11 @@ acpi_table_parse_madt_family ( entry = (acpi_table_entry_header *) ((unsigned long) madt + madt_size); - while (((unsigned long) entry) < madt_end) { + while (((unsigned long) entry) + sizeof(acpi_table_entry_header) < madt_end) { if (entry->type == entry_id && (!max_entries || count++ < max_entries)) - handler(entry); + if (handler(entry, madt_end)) + return -EINVAL; entry = (acpi_table_entry_header *) ((unsigned long) entry + entry->length);