ACPICA: Interpreter: Emit warning for creation of a zero-length op region
authorBob Moore <robert.moore@intel.com>
Fri, 15 Feb 2019 21:36:07 +0000 (13:36 -0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 18 Feb 2019 10:21:10 +0000 (11:21 +0100)
ACPICA commit 387c850c5d49d09d7c2e70b2711e584ad83956a1

Nothing can be done with such a region. Just emit a warning so as
not to abort a table load or running method.

Link: https://github.com/acpica/acpica/commit/387c850c
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/dsopcode.c

index cab14713e591976339cfec865a57a388c8a46228..10f32b62608eee5df9e26d60bea0f8f0fb6b2520 100644 (file)
@@ -356,6 +356,7 @@ acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
        union acpi_operand_object *operand_desc;
        struct acpi_namespace_node *node;
        union acpi_parse_object *next_op;
+       acpi_adr_space_type space_id;
 
        ACPI_FUNCTION_TRACE_PTR(ds_eval_region_operands, op);
 
@@ -368,6 +369,7 @@ acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
        /* next_op points to the op that holds the space_ID */
 
        next_op = op->common.value.arg;
+       space_id = (acpi_adr_space_type)next_op->common.value.integer;
 
        /* next_op points to address op */
 
@@ -403,6 +405,15 @@ acpi_ds_eval_region_operands(struct acpi_walk_state *walk_state,
        obj_desc->region.length = (u32) operand_desc->integer.value;
        acpi_ut_remove_reference(operand_desc);
 
+       /* A zero-length operation region is unusable. Just warn */
+
+       if (!obj_desc->region.length
+           && (space_id < ACPI_NUM_PREDEFINED_REGIONS)) {
+               ACPI_WARNING((AE_INFO,
+                             "Operation Region [%4.4s] has zero length (SpaceId %X)",
+                             node->name.ascii, space_id));
+       }
+
        /*
         * Get the address and save it
         * (at top of stack - 1)