From: Ye Xiaolong <xiaolong.ye@intel.com>
To: "Zheng, Lv" <lv.zheng@intel.com>
Cc: "Wysocki, Rafael J" <rafael.j.wysocki@intel.com>,
"Brown, Len" <len.brown@intel.com>,
"Moore, Robert" <robert.moore@intel.com>,
"Box, David E" <david.e.box@intel.com>,
Lv Zheng <zetalog@gmail.com>,
"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"devel@acpica.org" <devel@acpica.org>,
Hans de Goede <hdegoede@redhat.com>,
"Du, Julie" <julie.du@intel.com>
Subject: Re: [RFC PATCH 5/7] ACPICA: Tables: Enable acpi_ut_is_aml_table() for all ACPICA modules
Date: Wed, 22 Mar 2017 15:10:30 +0800 [thread overview]
Message-ID: <20170322071030.GL26669@yexl-desktop> (raw)
In-Reply-To: <1AE640813FDE7649BE1B193DEA596E886CE4E589@SHSMSX101.ccr.corp.intel.com>
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@vger.kernel.org [mailto:linux-acpi-owner@vger.kernel.org] 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@intel.com>
>> Cc: Hans de Goede <hdegoede@redhat.com>
>> ---
>> 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@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-03-22 7:14 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-15 6:36 [Devel] [RFC PATCH 0/7] ACPICA: Tables: Cleanup table sanity checks Lv Zheng
2017-03-15 6:36 ` Lv Zheng
2017-03-15 6:37 ` [Devel] [RFC PATCH 5/7] ACPICA: Tables: Enable acpi_ut_is_aml_table() for all ACPICA modules Lv Zheng
2017-03-15 6:37 ` Lv Zheng
2017-03-22 7:00 ` [Devel] " Zheng, Lv
2017-03-22 7:00 ` Zheng, Lv
2017-03-22 7:10 ` Ye Xiaolong [this message]
2017-03-15 13:33 ` [RFC PATCH 0/7] ACPICA: Tables: Cleanup table sanity checks Hans de Goede
-- strict thread matches above, loose matches on Subject: below --
2017-03-15 6:36 [Devel] [RFC PATCH 1/7] ACPICA: Tables: Cleanup table handler invokers Lv Zheng
2017-03-15 6:36 ` Lv Zheng
2017-03-15 6:37 [Devel] [RFC PATCH 2/7] ACPICA: Tables: Add sanity check for load_table opcode Lv Zheng
2017-03-15 6:37 ` Lv Zheng
2017-03-22 2:45 ` [ACPICA] c74279a226: ACPI_Error:Method_parse/execution_failed[~_SB.PCI0.HEC2._INI](Node#), AE_BAD_SIGNATURE(#/psparse-#) kernel test robot
2017-03-15 6:37 [Devel] [RFC PATCH 3/7] ACPICA: Tables: Add sanity check for table install Lv Zheng
2017-03-15 6:37 ` Lv Zheng
2017-03-15 6:37 [Devel] [RFC PATCH 4/7] ACPICA: Tables: Fix an unwanted exception for table reloading Lv Zheng
2017-03-15 6:37 ` Lv Zheng
2017-03-15 6:37 [Devel] [RFC PATCH 6/7] ACPICA: Tables: Add sanity check for static table load Lv Zheng
2017-03-15 6:37 ` Lv Zheng
2017-03-15 6:37 [Devel] [RFC PATCH 7/7] ACPICA: Tables: Change table comparison using table header for static load tables Lv Zheng
2017-03-15 6:37 ` Lv Zheng
2017-03-16 6:29 [Devel] [RFC PATCH 0/7] ACPICA: Tables: Cleanup table sanity checks Zheng, Lv
2017-03-16 6:29 ` Zheng, Lv
2017-03-16 6:50 [Devel] " Zheng, Lv
2017-03-16 6:50 ` Zheng, Lv
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170322071030.GL26669@yexl-desktop \
--to=xiaolong.ye@intel.com \
--cc=david.e.box@intel.com \
--cc=devel@acpica.org \
--cc=hdegoede@redhat.com \
--cc=julie.du@intel.com \
--cc=len.brown@intel.com \
--cc=linux-acpi@vger.kernel.org \
--cc=lv.zheng@intel.com \
--cc=rafael.j.wysocki@intel.com \
--cc=robert.moore@intel.com \
--cc=zetalog@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.