ACPICA: Interpreter: fix memory leak by using existing buffer
authorErik Kaneda <erik.kaneda@intel.com>
Mon, 30 Nov 2020 19:20:47 +0000 (11:20 -0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 1 Dec 2020 17:13:30 +0000 (18:13 +0100)
commit32cf1a12cad43358e47dac8014379c2f33dfbed4
tree041643054491108a5cd19404ab3c5117ed1d9456
parent0766efdf9a9d24eaefe260c787f49af225018b16
ACPICA: Interpreter: fix memory leak by using existing buffer

ACPICA commit 52d1da5dcbd79a722b70f02a1a83f04088f51ff6

There was a memory leak that ocurred when a _CID object is defined as
a package containing string objects. When _CID is checked for any
possible repairs, it calls a helper function to repair _HID (because
_CID basically contains multiple _HID entries).

The _HID repair function assumes that string objects are standalone
objects that are not contained inside of any packages. The _HID
repair function replaces the string object with a brand new object
and attempts to delete the old object by decrementing the reference
count of the old object. Strings inside of packages have a reference
count of 2 so the _HID repair function leaves this object in a
dangling state and causes a memory leak.

Instead of allocating a brand new object and removing the old object,
use the existing object when repairing the _HID object.

Link: https://github.com/acpica/acpica/commit/52d1da5d
Signed-off-by: Erik Kaneda <erik.kaneda@intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/acpica/nsrepair2.c