lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.12 216/700] ACPICA: Fix memory leak caused by _CID repair function
    Date
    From: Erik Kaneda <erik.kaneda@intel.com>

    [ Upstream commit c27bac0314131b11bccd735f7e8415ac6444b667 ]

    ACPICA commit 180cb53963aa876c782a6f52cc155d951b26051a

    According to the ACPI spec, _CID returns a package containing
    hardware ID's. Each element of an ASL package contains a reference
    count from the parent package as well as the element itself.

    Name (TEST, Package() {
    "String object" // this package element has a reference count of 2
    })

    A memory leak was caused in the _CID repair function because it did
    not decrement the reference count created by the package. Fix the
    memory leak by calling acpi_ut_remove_reference on _CID package elements
    that represent a hardware ID (_HID).

    Link: https://github.com/acpica/acpica/commit/180cb539
    Tested-by: Shawn Guo <shawn.guo@linaro.org>
    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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/acpi/acpica/nsrepair2.c | 7 +++++++
    1 file changed, 7 insertions(+)

    diff --git a/drivers/acpi/acpica/nsrepair2.c b/drivers/acpi/acpica/nsrepair2.c
    index 14b71b41e845..38e10ab976e6 100644
    --- a/drivers/acpi/acpica/nsrepair2.c
    +++ b/drivers/acpi/acpica/nsrepair2.c
    @@ -379,6 +379,13 @@ acpi_ns_repair_CID(struct acpi_evaluate_info *info,

    (*element_ptr)->common.reference_count =
    original_ref_count;
    +
    + /*
    + * The original_element holds a reference from the package object
    + * that represents _HID. Since a new element was created by _HID,
    + * remove the reference from the _CID package.
    + */
    + acpi_ut_remove_reference(original_element);
    }

    element_ptr++;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 09:35    [W:3.794 / U:0.504 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site