]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "ACPI / resources: Use AE_CTRL_TERMINATE to terminate resources walks"
authorDaniel Scally <djrscally@gmail.com>
Sat, 5 Dec 2020 17:04:03 +0000 (17:04 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 Dec 2020 12:42:42 +0000 (13:42 +0100)
commit 12fc4dad94dfac25599f31257aac181c691ca96f upstream.

This reverts commit 8a66790b7850a6669129af078768a1d42076a0ef.

Switching this function to AE_CTRL_TERMINATE broke the documented
behaviour of acpi_dev_get_resources() - AE_CTRL_TERMINATE does not, in
fact, terminate the resource walk because acpi_walk_resource_buffer()
ignores it (specifically converting it to AE_OK), referring to that
value as "an OK termination by the user function". This means that
acpi_dev_get_resources() does not abort processing when the preproc
function returns a negative value.

Signed-off-by: Daniel Scally <djrscally@gmail.com>
Cc: 3.10+ <stable@vger.kernel.org> # 3.10+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/acpi/resource.c

index 627f8fbb5e9a2753a06948836295a06af9b937b0..e6003d2baa45107d02303de21a8182f3123ee37d 100644 (file)
@@ -506,7 +506,7 @@ static acpi_status acpi_dev_process_resource(struct acpi_resource *ares,
                ret = c->preproc(ares, c->preproc_data);
                if (ret < 0) {
                        c->error = ret;
-                       return AE_CTRL_TERMINATE;
+                       return AE_ABORT_METHOD;
                } else if (ret > 0) {
                        return AE_OK;
                }