Re: [RFC PATCH 5/7] ACPICA: Tables: Enable acpi_ut_is_aml_table() for all ACPICA modules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux