Description
In the Linux kernel, the following vulnerability has been resolved: ACPICA: Fix use-after-free in acpi_ut_copy_ipackage_to_ipackage() There is an use-after-free reported by KASAN: BUG: KASAN: use-after-free in acpi_ut_remove_reference+0x3b/0x82 Read of size 1 at addr ffff888112afc460 by task modprobe/2111 CPU: 0 PID: 2111 Comm: modprobe Not tainted 6.1.0-rc7-dirty Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), Call Trace: <TASK> kasan_report+0xae/0xe0 acpi_ut_remove_reference+0x3b/0x82 acpi_ut_copy_iobject_to_iobject+0x3be/0x3d5 acpi_ds_store_object_to_local+0x15d/0x3a0 acpi_ex_store+0x78d/0x7fd acpi_ex_opcode_1A_1T_1R+0xbe4/0xf9b acpi_ps_parse_aml+0x217/0x8d5 ... </TASK> The root cause of the problem is that the acpi_operand_object is freed when acpi_ut_walk_package_tree() fails in acpi_ut_copy_ipackage_to_ipackage(), lead to repeated release in acpi_ut_copy_iobject_to_iobject(). The problem was introduced by "8aa5e56eeb61" commit, this commit is to fix memory leak in acpi_ut_copy_iobject_to_iobject(), repeatedly adding remove operation, lead to "acpi_operand_object" used after free. Fix it by removing acpi_ut_remove_reference() in acpi_ut_copy_ipackage_to_ipackage(). acpi_ut_copy_ipackage_to_ipackage() is called to copy an internal package object into another internal package object, when it fails, the memory of acpi_operand_object should be freed by the caller.
Product status
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before 133462d35dae95edb944af86b986d4c9dec59bd1
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before 02f237423c9c6a18e062de2d474f85d5659e4eb9
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before c9125b643fc51b8e662f2f614096ceb45a0adbc3
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before dfdde4d5138bc023897033a5ac653a84e94805be
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before 02617006b5a46f2ea55ac61f5693c7afd7bf9276
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before 6fde666278f91b85d71545a0ebbf41d8d7af8074
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before f51b2235e4f320edc839c3e5cb0d1f8a6e8657c6
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before 01f2c2052ea50fb9a8ce12e4e83aed0267934ef0
8aa5e56eeb61a099ea6519eb30ee399e1bc043ce before 470188b09e92d83c5a997f25f0e8fb8cd2bc3469
b3e98f0c4f996cd53b80bad71f0d7e4a2cf3a4e8
7af5504c102a378376101dbd160246b10a814dd0
e29a15484d7ea949e49ae7fb7e576a575da824a6
e2ab6731a36966d042a2d4dabd980496cd680f75
3.17
Any version before 3.17
4.9.337
4.14.303
4.19.270
5.4.229
5.10.163
5.15.86
6.0.16
6.1.2
6.2
References
git.kernel.org/...c/133462d35dae95edb944af86b986d4c9dec59bd1
git.kernel.org/...c/02f237423c9c6a18e062de2d474f85d5659e4eb9
git.kernel.org/...c/c9125b643fc51b8e662f2f614096ceb45a0adbc3
git.kernel.org/...c/dfdde4d5138bc023897033a5ac653a84e94805be
git.kernel.org/...c/02617006b5a46f2ea55ac61f5693c7afd7bf9276
git.kernel.org/...c/6fde666278f91b85d71545a0ebbf41d8d7af8074
git.kernel.org/...c/f51b2235e4f320edc839c3e5cb0d1f8a6e8657c6
git.kernel.org/...c/01f2c2052ea50fb9a8ce12e4e83aed0267934ef0
git.kernel.org/...c/470188b09e92d83c5a997f25f0e8fb8cd2bc3469