On 03/22, Zheng, Lv wrote: >Hi, Hans > >Just FYI. >This commit is wrong. >It shouldn't change static table load signature check. >Should be replaced by this fix: >https://github.com/acpica/acpica/pull/121/commits/3d9eeb046c >Thanks Xiaolong for his test and report. I'm glad it helps. :) Thanks, Xiaolong > >Thanks and best regards >Lv > >> From: linux-acpi-owner@xxxxxxxxxxxxxxx [mailto:linux-acpi-owner@xxxxxxxxxxxxxxx] On Behalf Of Lv Zheng >> Subject: [RFC PATCH 5/7] ACPICA: Tables: Enable acpi_ut_is_aml_table() for all ACPICA modules >> >> This patch enables acpi_ut_is_aml_table() for all ACPICA modules so that it can >> be used by Linux kernel. Lv Zheng. >> >> Signed-off-by: Lv Zheng <lv.zheng@xxxxxxxxx> >> Cc: Hans de Goede <hdegoede@xxxxxxxxxx> >> --- >> drivers/acpi/acpica/acutils.h | 4 +--- >> drivers/acpi/acpica/tbdata.c | 17 +++-------------- >> drivers/acpi/acpica/tbxfload.c | 10 +++------- >> drivers/acpi/acpica/utmisc.c | 27 +++++++++++++++++---------- >> 4 files changed, 24 insertions(+), 34 deletions(-) >> >> diff --git a/drivers/acpi/acpica/acutils.h b/drivers/acpi/acpica/acutils.h >> index 6f28cfa..c0b697f 100644 >> --- a/drivers/acpi/acpica/acutils.h >> +++ b/drivers/acpi/acpica/acutils.h >> @@ -545,9 +545,7 @@ const struct acpi_exception_info *acpi_ut_validate_exception(acpi_status >> >> u8 acpi_ut_is_pci_root_bridge(char *id); >> >> -#if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP) >> -u8 acpi_ut_is_aml_table(struct acpi_table_header *table); >> -#endif >> +u8 acpi_ut_is_aml_table(char *signature); >> >> acpi_status >> acpi_ut_walk_package_tree(union acpi_operand_object *source_object, >> diff --git a/drivers/acpi/acpica/tbdata.c b/drivers/acpi/acpica/tbdata.c >> index 1a4371b..1e1222d 100644 >> --- a/drivers/acpi/acpica/tbdata.c >> +++ b/drivers/acpi/acpica/tbdata.c >> @@ -859,20 +859,9 @@ acpi_tb_validate_table_for_load(u32 *table_index, >> goto unlock_and_exit; >> } >> >> - /* >> - * Validate the incoming table signature. >> - * >> - * 1) Originally, we checked the table signature for "SSDT" or "PSDT". >> - * 2) We added support for OEMx tables, signature "OEM". >> - * 3) Valid tables were encountered with a null signature, so we just >> - * gave up on validating the signature, (05/2008). >> - * 4) We encountered non-AML tables such as the MADT, which caused >> - * interpreter errors and kernel faults. So now, we once again allow >> - * only "SSDT", "OEMx", and now, also a null signature. (05/2011). >> - */ >> - if ((table_desc->signature.ascii[0] != 0x00) && >> - (!ACPI_COMPARE_NAME(&table_desc->signature, ACPI_SIG_SSDT)) && >> - (strncmp(table_desc->signature.ascii, "OEM", 3))) { >> + /* Validate the incoming table signature */ >> + >> + if (!acpi_ut_is_aml_table(table_desc->signature.ascii)) { >> ACPI_BIOS_ERROR((AE_INFO, >> "Table has invalid signature [%4.4s] (0x%8.8X), " >> "must be SSDT or OEMx", >> diff --git a/drivers/acpi/acpica/tbxfload.c b/drivers/acpi/acpica/tbxfload.c >> index b71ce3b..9753176 100644 >> --- a/drivers/acpi/acpica/tbxfload.c >> +++ b/drivers/acpi/acpica/tbxfload.c >> @@ -206,13 +206,9 @@ acpi_status acpi_tb_load_namespace(void) >> for (i = 0; i < acpi_gbl_root_table_list.current_table_count; ++i) { >> table = &acpi_gbl_root_table_list.tables[i]; >> >> - if (!acpi_gbl_root_table_list.tables[i].address || >> - (!ACPI_COMPARE_NAME(table->signature.ascii, ACPI_SIG_SSDT) >> - && !ACPI_COMPARE_NAME(table->signature.ascii, >> - ACPI_SIG_PSDT) >> - && !ACPI_COMPARE_NAME(table->signature.ascii, >> - ACPI_SIG_OSDT)) >> - || ACPI_FAILURE(acpi_tb_validate_table(table))) { >> + if (!table->address || i == acpi_gbl_dsdt_index || >> + !acpi_ut_is_aml_table(table->signature.ascii) || >> + ACPI_FAILURE(acpi_tb_validate_table(table))) { >> continue; >> } >> >> diff --git a/drivers/acpi/acpica/utmisc.c b/drivers/acpi/acpica/utmisc.c >> index 443ffad..e5074d8 100644 >> --- a/drivers/acpi/acpica/utmisc.c >> +++ b/drivers/acpi/acpica/utmisc.c >> @@ -75,7 +75,6 @@ u8 acpi_ut_is_pci_root_bridge(char *id) >> return (FALSE); >> } >> >> -#if (defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP || defined ACPI_NAMES_APP) >> /******************************************************************************* >> * >> * FUNCTION: acpi_ut_is_aml_table >> @@ -90,21 +89,29 @@ u8 acpi_ut_is_pci_root_bridge(char *id) >> * >> ******************************************************************************/ >> >> -u8 acpi_ut_is_aml_table(struct acpi_table_header *table) >> +u8 acpi_ut_is_aml_table(char *signature) >> { >> - >> - /* These are the only tables that contain executable AML */ >> - >> - if (ACPI_COMPARE_NAME(table->signature, ACPI_SIG_DSDT) || >> - ACPI_COMPARE_NAME(table->signature, ACPI_SIG_PSDT) || >> - ACPI_COMPARE_NAME(table->signature, ACPI_SIG_SSDT) || >> - ACPI_COMPARE_NAME(table->signature, ACPI_SIG_OSDT)) { >> + /* >> + * These are the only tables that contain executable AML >> + * 1) Originally, we checked the table signature for "SSDT" or "PSDT". >> + * 2) We added support for OEMx tables, signature "OEM". >> + * 3) Valid tables were encountered with a null signature, so we just >> + * gave up on validating the signature, (05/2008). >> + * 4) We encountered non-AML tables such as the MADT, which caused >> + * interpreter errors and kernel faults. So now, we once again allow >> + * only "SSDT", "OEMx", and now, also a null signature. (05/2011). >> + */ >> + if (signature[0] == 0x00 || >> + ACPI_COMPARE_NAME(signature, ACPI_SIG_DSDT) || >> + ACPI_COMPARE_NAME(signature, ACPI_SIG_PSDT) || >> + ACPI_COMPARE_NAME(signature, ACPI_SIG_SSDT) || >> + ACPI_COMPARE_NAME(signature, ACPI_SIG_OSDT) || >> + strncmp(signature, "OEM", 3) == 0) { >> return (TRUE); >> } >> >> return (FALSE); >> } >> -#endif >> >> /******************************************************************************* >> * >> -- >> 2.7.4 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html