aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/acpica/dspkginit.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2018-12-21 10:03:16 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2018-12-21 10:03:16 +0100
commit1027fb0fb94aaaaa36ad58193fc61c36efaced85 (patch)
tree10808022e183c1618e36c4eb7a203877d32fc214 /drivers/acpi/acpica/dspkginit.c
parent28586a51eea666d5531bcaef2f68e4abbd87242c (diff)
parent3b15e830ba59ae20a52b401e8f9e981bd21ab577 (diff)
downloadkernel_replicant_linux-1027fb0fb94aaaaa36ad58193fc61c36efaced85.tar.gz
kernel_replicant_linux-1027fb0fb94aaaaa36ad58193fc61c36efaced85.tar.bz2
kernel_replicant_linux-1027fb0fb94aaaaa36ad58193fc61c36efaced85.zip
Merge branch 'acpica'
* acpica: ACPICA: Update version to 20181213 ACPICA: change coding style to match ACPICA, no functional change ACPICA: Debug output: Add option to display method/object evaluation ACPICA: disassembler: disassemble OEMx tables as AML ACPICA: Add "Windows 2018.2" string in the _OSI support ACPICA: Expressions in package elements are not supported ACPICA: Update buffer-to-string conversions ACPICA: add comments, no functional change ACPICA: Remove defines that use deprecated flag ACPICA: Add "Windows 2018" string in the _OSI support ACPICA: Update version to 20181031 ACPICA: iASL: Enhance error detection ACPICA: iASL: adding definition and disassembly for TPM2 revision 3 ACPICA: Use %d for signed int print formatting instead of %u ACPICA: Debugger: refactor to fix unused variable warning
Diffstat (limited to 'drivers/acpi/acpica/dspkginit.c')
-rw-r--r--drivers/acpi/acpica/dspkginit.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/acpi/acpica/dspkginit.c b/drivers/acpi/acpica/dspkginit.c
index d703a5594a02..584853385268 100644
--- a/drivers/acpi/acpica/dspkginit.c
+++ b/drivers/acpi/acpica/dspkginit.c
@@ -152,6 +152,32 @@ acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,
*/
for (i = 0; arg && (i < element_count); i++) {
if (arg->common.aml_opcode == AML_INT_RETURN_VALUE_OP) {
+ if (!arg->common.node) {
+ /*
+ * This is the case where an expression has returned a value.
+ * The use of expressions (term_args) within individual
+ * package elements is not supported by the AML interpreter,
+ * even though the ASL grammar supports it. Example:
+ *
+ * Name (INT1, 0x1234)
+ *
+ * Name (PKG3, Package () {
+ * Add (INT1, 0xAAAA0000)
+ * })
+ *
+ * 1) No known AML interpreter supports this type of construct
+ * 2) This fixes a fault if the construct is encountered
+ */
+ ACPI_EXCEPTION((AE_INFO, AE_SUPPORT,
+ "Expressions within package elements are not supported"));
+
+ /* Cleanup the return object, it is not needed */
+
+ acpi_ut_remove_reference(walk_state->results->
+ results.obj_desc[0]);
+ return_ACPI_STATUS(AE_SUPPORT);
+ }
+
if (arg->common.node->type == ACPI_TYPE_METHOD) {
/*
* A method reference "looks" to the parser to be a method