ACPICA: Update resource descriptor handling
authorBob Moore <robert.moore@intel.com>
Mon, 5 Jun 2017 08:40:50 +0000 (16:40 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 20 Jul 2017 14:39:51 +0000 (16:39 +0200)
ACPICA commit c8eac10178b387f9eb1935694e509d4518da77bb

This change restores the change introduced by commit 23b5bbe and
adds a comment concerning resource descriptor buffers that extend
beyond the END_TAG descriptor.

Link: https://github.com/acpica/acpica/commit/c8eac101
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/utresrc.c

index 70f78a4bf13b84d561a6b76e24e33b4372a87f12..d955bf852a037e104235d77d5b0610af3f15e724 100644 (file)
@@ -184,9 +184,11 @@ acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,
 
        ACPI_FUNCTION_TRACE(ut_walk_aml_resources);
 
-       /* The absolute minimum resource template is one end_tag descriptor */
-
-       if (aml_length < sizeof(struct aml_resource_end_tag)) {
+       /*
+        * The absolute minimum resource template is one end_tag descriptor.
+        * However, we will treat a lone end_tag as just a simple buffer.
+        */
+       if (aml_length <= sizeof(struct aml_resource_end_tag)) {
                return_ACPI_STATUS(AE_AML_NO_RESOURCE_END_TAG);
        }
 
@@ -243,8 +245,10 @@ acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,
                                *context = aml;
                        }
 
-                       /* Normal exit */
-
+                       /*
+                        * Normal exit. Note: We allow the buffer to be larger than
+                        * the resource template, as long as the END_TAG exists.
+                        */
                        return_ACPI_STATUS(AE_OK);
                }