ACPI fix for 6.7-rc1

Fix the acpi_thermal_add() error path that may do a double-free
 in some cases after recent changes (Dan Carpenter).
 -----BEGIN PGP SIGNATURE-----
 
 iQJGBAABCAAwFiEE4fcc61cGeeHD/fCwgsRv/nhiVHEFAmVFBpgSHHJqd0Byand5
 c29ja2kubmV0AAoJEILEb/54YlRx7y4P/j8xXFy5HbP+Qd5qNGTNPhmdhpC0OB72
 cqbWujNv0EK6OhryK54qI5gh4z7NoX7QBb6vmGPHNsKCtPdrOY/+IU1YfYAx6o6W
 00jcDr08iPqr1CNxpwn+4OSCH6cJualQCAtD+7MGmFwh2OlH0GsohlZEeti0bzt7
 +2uEK1M7zGP7K0UBGeNs/epynWlikmgDX8g6rxFbjtyyTdbWwvi7Vkq9WV+09MUj
 lMirq3Pmzc9kesoGEFJXSySugfGL1YWwDme8xOX9cjsIcX32KbcutbH7sMqBWiB9
 nQePTF/S1gXbcQ+pXrO/KJnueOOkMgPBiqahAEVNSjfgd/KbscLaWAlMGfSzyvqo
 UCWu2jN2WdnRv7B+RS3SAVejTBR4OYjHAHkTRIk+0JvbzD4tNaVdbK0zp2zxVphh
 tNB2hbD3mJA5DMbqP9nbcUvkWoYcwLFUgTGKyAzp4fKSq7ct+80ove8D5eJOf94Z
 YLgiMDpPjLYxboPz5JiwNk70CHQkqiMF9hQVYHmHfAPO36lcoo8zcu5vnmJaKUAz
 HdrGksgs5quuYZfRYexaSB5995nr7E72g5HBkCCu4t0vTGoJ5fN8c8cepRGSWCKp
 WNmPR/DGrc4y1CcJo4MnPvAMvCcExhgbpD++rLBew5AD4q663bkzB9FPghqehHIr
 nFAtlS4l57WE
 =LLgE
 -----END PGP SIGNATURE-----

Merge tag 'acpi-6.7-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm

Pull ACPI fix from Rafael Wysocki:
 "Fix the acpi_thermal_add() error path that may do a double-free in
  some cases after recent changes (Dan Carpenter)"

* tag 'acpi-6.7-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  ACPI: thermal: Fix acpi_thermal_unregister_thermal_zone() cleanup
This commit is contained in:
Linus Torvalds 2023-11-04 07:54:21 -10:00
commit 3062a9879a

View File

@ -702,9 +702,9 @@ unregister_tzd:
static void acpi_thermal_unregister_thermal_zone(struct acpi_thermal *tz) static void acpi_thermal_unregister_thermal_zone(struct acpi_thermal *tz)
{ {
thermal_zone_device_disable(tz->thermal_zone);
acpi_thermal_zone_sysfs_remove(tz); acpi_thermal_zone_sysfs_remove(tz);
thermal_zone_device_unregister(tz->thermal_zone); thermal_zone_device_unregister(tz->thermal_zone);
kfree(tz->trip_table);
tz->thermal_zone = NULL; tz->thermal_zone = NULL;
} }
@ -967,7 +967,7 @@ static void acpi_thermal_remove(struct acpi_device *device)
flush_workqueue(acpi_thermal_pm_queue); flush_workqueue(acpi_thermal_pm_queue);
acpi_thermal_unregister_thermal_zone(tz); acpi_thermal_unregister_thermal_zone(tz);
kfree(tz->trip_table);
acpi_thermal_free_thermal_zone(tz); acpi_thermal_free_thermal_zone(tz);
} }