Rafael J. Wysocki 5777432eba ACPICA: Fix error code path in acpi_ds_call_control_method()
[ Upstream commit 404ec60438add1afadaffaed34bb5fe4ddcadd40 ]

A use-after-free in acpi_ps_parse_aml() after a failing invocaion of
acpi_ds_call_control_method() is reported by KASAN [1] and code
inspection reveals that next_walk_state pushed to the thread by
acpi_ds_create_walk_state() is freed on errors, but it is not popped
from the thread beforehand.  Thus acpi_ds_get_current_walk_state()
called by acpi_ps_parse_aml() subsequently returns it as the new
walk state which is incorrect.

To address this, make acpi_ds_call_control_method() call
acpi_ds_pop_walk_state() to pop next_walk_state from the thread before
returning an error.

Link: https://lore.kernel.org/linux-acpi/20221019073443.248215-1-chenzhongjin@huawei.com/ # [1]
Reported-by: Chen Zhongjin <chenzhongjin@huawei.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Reviewed-by: Chen Zhongjin <chenzhongjin@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-12-31 13:14:40 +01:00
..
2021-08-04 18:08:50 +02:00
2021-11-18 19:16:19 +01:00
2021-06-23 19:27:50 +02:00
2022-08-17 14:23:11 +02:00
2021-06-30 12:21:16 -07:00
2020-11-09 19:25:20 +01:00
2021-07-02 13:22:47 -07:00
2021-06-07 15:36:46 +02:00
2020-11-09 19:08:06 +01:00
2022-08-17 14:23:11 +02:00
2020-11-09 19:08:06 +01:00