]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ACPI: processor: idle: Fix memory leak when register cpuidle device failed
authorHuisong Li <lihuisong@huawei.com>
Mon, 28 Jul 2025 07:06:11 +0000 (15:06 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Oct 2025 09:56:26 +0000 (11:56 +0200)
[ Upstream commit 11b3de1c03fa9f3b5d17e6d48050bc98b3704420 ]

The cpuidle device's memory is leaked when cpuidle device registration
fails in acpi_processor_power_init().  Free it as appropriate.

Fixes: 3d339dcbb56d ("cpuidle / ACPI : move cpuidle_device field out of the acpi_processor_power structure")
Signed-off-by: Huisong Li <lihuisong@huawei.com>
Link: https://patch.msgid.link/20250728070612.1260859-2-lihuisong@huawei.com
[ rjw: Changed the order of the new statements, added empty line after if () ]
[ rjw: Changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/acpi/processor_idle.c

index 3386d01c1f157a50661c6aac0751c073d76107da..afa3b4ac367a33aa8bc99dfb505ccd355e00df99 100644 (file)
@@ -1411,6 +1411,9 @@ int acpi_processor_power_init(struct acpi_processor *pr)
                if (retval) {
                        if (acpi_processor_registered == 0)
                                cpuidle_unregister_driver(&acpi_idle_driver);
+
+                       per_cpu(acpi_cpuidle_device, pr->id) = NULL;
+                       kfree(dev);
                        return retval;
                }
                acpi_processor_registered++;