[PATCH V2 1/4] ACPI: Fix up _PLD methods

Matthew Garrett
2012-03-12T21:45:59Z

_PLD is defined as returning a package of buffers, but many implementations
simply return a buffer. Fix this up.

(Original patch by Bob Moore <robert.moore@intel.com>)

Signed-off-by: Matthew Garrett <mjg@redhat.com>
---
drivers/acpi/acpica/nsrepair.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/acpica/nsrepair.c b/drivers/acpi/acpica/nsrepair.c
index 9c35d20..6217cfd 100644
--- a/drivers/acpi/acpica/nsrepair.c
+++ b/drivers/acpi/acpica/nsrepair.c
@@ -151,9 +151,18 @@ acpi_ns_repair_object(struct acpi_predefined_data *data,
}
}
if (expected_btypes & ACPI_RTYPE_PACKAGE) {
- status = acpi_ns_convert_to_package(return_object, &new_object);
- if (ACPI_SUCCESS(status)) {
- goto object_repaired;
+ if (return_object->common.type == ACPI_TYPE_BUFFER) {
+ status = acpi_ns_repair_package_list(data, &return_object);
+ if (ACPI_SUCCESS(status)) {
+ *return_object_ptr = return_object;
+ data->flags |= ACPI_OBJECT_REPAIRED;
+ return (AE_OK);
+ }
+ } else {
+ status = acpi_ns_convert_to_package(return_object, &new_object);
+ if (ACPI_SUCCESS(status)) {
+ goto object_repaired;
+ }
}
}

--
1.7.9.3