ACPICA: Do not abort _PRT repair on a single subpackage failure.
authorBob Moore <robert.moore@intel.com>
Wed, 26 Feb 2014 02:30:43 +0000 (10:30 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 26 Feb 2014 23:46:00 +0000 (00:46 +0100)
Always examine all subpackages for reversed entries.

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/nsrepair2.c

index c57cd4aa357db7d54814493cf6f59aa38b66bd70..18012140de1fbe728a96ee413c296d302483739b 100644 (file)
@@ -620,12 +620,16 @@ acpi_ns_repair_PRT(struct acpi_evaluate_info *info,
        top_object_list = package_object->package.elements;
        element_count = package_object->package.count;
 
-       for (index = 0; index < element_count; index++) {
+       /* Examine each subpackage */
+
+       for (index = 0; index < element_count; index++, top_object_list++) {
                sub_package = *top_object_list;
                sub_object_list = sub_package->package.elements;
 
-               if (sub_package->package.count < 4) {   /* Minimum required element count */
-                       return (AE_OK);
+               /* Check for minimum required element count */
+
+               if (sub_package->package.count < 4) {
+                       continue;
                }
 
                /*
@@ -640,15 +644,12 @@ acpi_ns_repair_PRT(struct acpi_evaluate_info *info,
                        sub_object_list[2] = obj_desc;
                        info->return_flags |= ACPI_OBJECT_REPAIRED;
 
-                       ACPI_WARN_PREDEFINED((AE_INFO, info->full_pathname,
+                       ACPI_WARN_PREDEFINED((AE_INFO,
+                                             info->full_pathname,
                                              info->node_flags,
                                              "PRT[%X]: Fixed reversed SourceName and SourceIndex",
                                              index));
                }
-
-               /* Point to the next union acpi_operand_object in the top level package */
-
-               top_object_list++;
        }
 
        return (AE_OK);