ACPI: utils: Fix error path in acpi_evaluate_reference()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 7 Dec 2023 18:28:10 +0000 (19:28 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 7 Dec 2023 20:38:21 +0000 (21:38 +0100)
commit8f0b960a42badda7a2781e8a33564624200debc9
treee058eed4f783654aad516b4f62b0262adbc76b85
parent33cc938e65a98f1d29d0a18403dbbee050dcad9a
ACPI: utils: Fix error path in acpi_evaluate_reference()

If a pointer to an uninitialized struct acpi_handle_list is passed to
acpi_evaluate_reference() and it decides to bail out early, either
because acpi_evaluate_object() fails, or because it produces invalid
data, the handles pointer from the struct acpi_handle_list will be
passed to kfree() and if it is not NULL, the kernel will crash on an
attempt to free unallocated memory.

Address this by moving the "end" label in acpi_evaluate_reference() to
the end of the function, which is sufficient, because no cleanup is
needed in that case.

Fixes: 2e57d10a6591 ("ACPI: utils: Dynamically determine acpi_handle_list size")
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Tested-by: Woody Suwalski <terraluna977@gmail.com>
drivers/acpi/utils.c