Thermal/int340x: Fix memleak for aux trip
When thermal zone device register fails or on module exit, the memory for aux_trip is not freed. This change fixes this issue. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
This commit is contained in:
parent
78045bfe85
commit
d5bce86777
drivers/thermal/int340x_thermal
|
@ -208,7 +208,7 @@ struct int34x_thermal_zone *int340x_thermal_zone_add(struct acpi_device *adev,
|
||||||
trip_cnt, GFP_KERNEL);
|
trip_cnt, GFP_KERNEL);
|
||||||
if (!int34x_thermal_zone->aux_trips) {
|
if (!int34x_thermal_zone->aux_trips) {
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto free_mem;
|
goto err_trip_alloc;
|
||||||
}
|
}
|
||||||
trip_mask = BIT(trip_cnt) - 1;
|
trip_mask = BIT(trip_cnt) - 1;
|
||||||
int34x_thermal_zone->aux_trip_nr = trip_cnt;
|
int34x_thermal_zone->aux_trip_nr = trip_cnt;
|
||||||
|
@ -248,14 +248,15 @@ struct int34x_thermal_zone *int340x_thermal_zone_add(struct acpi_device *adev,
|
||||||
0, 0);
|
0, 0);
|
||||||
if (IS_ERR(int34x_thermal_zone->zone)) {
|
if (IS_ERR(int34x_thermal_zone->zone)) {
|
||||||
ret = PTR_ERR(int34x_thermal_zone->zone);
|
ret = PTR_ERR(int34x_thermal_zone->zone);
|
||||||
goto free_lpat;
|
goto err_thermal_zone;
|
||||||
}
|
}
|
||||||
|
|
||||||
return int34x_thermal_zone;
|
return int34x_thermal_zone;
|
||||||
|
|
||||||
free_lpat:
|
err_thermal_zone:
|
||||||
acpi_lpat_free_conversion_table(int34x_thermal_zone->lpat_table);
|
acpi_lpat_free_conversion_table(int34x_thermal_zone->lpat_table);
|
||||||
free_mem:
|
kfree(int34x_thermal_zone->aux_trips);
|
||||||
|
err_trip_alloc:
|
||||||
kfree(int34x_thermal_zone);
|
kfree(int34x_thermal_zone);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
|
@ -266,6 +267,7 @@ void int340x_thermal_zone_remove(struct int34x_thermal_zone
|
||||||
{
|
{
|
||||||
thermal_zone_device_unregister(int34x_thermal_zone->zone);
|
thermal_zone_device_unregister(int34x_thermal_zone->zone);
|
||||||
acpi_lpat_free_conversion_table(int34x_thermal_zone->lpat_table);
|
acpi_lpat_free_conversion_table(int34x_thermal_zone->lpat_table);
|
||||||
|
kfree(int34x_thermal_zone->aux_trips);
|
||||||
kfree(int34x_thermal_zone);
|
kfree(int34x_thermal_zone);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(int340x_thermal_zone_remove);
|
EXPORT_SYMBOL_GPL(int340x_thermal_zone_remove);
|
||||||
|
|
Loading…
Reference in New Issue