diff mbox series

hwmon: (acpi_power_meter) Fix potential memory leak in acpi_power_meter_add()

Message ID 20200625043242.31175-1-misono.tomohiro@jp.fujitsu.com (mailing list archive)
State Accepted
Headers show
Series hwmon: (acpi_power_meter) Fix potential memory leak in acpi_power_meter_add() | expand

Commit Message

Misono Tomohiro June 25, 2020, 4:32 a.m. UTC
Although it rarely happens, we should call free_capabilities()
if error happens after read_capabilities() to free allocated strings.

Fixes: commit de584afa5e188 ("hwmon driver for ACPI 4.0 power meters")
Signed-off-by: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>
---
 drivers/hwmon/acpi_power_meter.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Guenter Roeck June 25, 2020, 1:51 p.m. UTC | #1
On Thu, Jun 25, 2020 at 01:32:42PM +0900, Misono Tomohiro wrote:
> Although it rarely happens, we should call free_capabilities()
> if error happens after read_capabilities() to free allocated strings.
> 
> Fixes: commit de584afa5e188 ("hwmon driver for ACPI 4.0 power meters")
> Signed-off-by: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com>

Applied.

Thanks,
Guenter

> ---
>  drivers/hwmon/acpi_power_meter.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
> index 0db8ef4fd6e1..a270b975e90b 100644
> --- a/drivers/hwmon/acpi_power_meter.c
> +++ b/drivers/hwmon/acpi_power_meter.c
> @@ -883,7 +883,7 @@ static int acpi_power_meter_add(struct acpi_device *device)
>  
>  	res = setup_attrs(resource);
>  	if (res)
> -		goto exit_free;
> +		goto exit_free_capability;
>  
>  	resource->hwmon_dev = hwmon_device_register(&device->dev);
>  	if (IS_ERR(resource->hwmon_dev)) {
> @@ -896,6 +896,8 @@ static int acpi_power_meter_add(struct acpi_device *device)
>  
>  exit_remove:
>  	remove_attrs(resource);
> +exit_free_capability:
> +	free_capabilities(resource);
>  exit_free:
>  	kfree(resource);
>  exit:
diff mbox series

Patch

diff --git a/drivers/hwmon/acpi_power_meter.c b/drivers/hwmon/acpi_power_meter.c
index 0db8ef4fd6e1..a270b975e90b 100644
--- a/drivers/hwmon/acpi_power_meter.c
+++ b/drivers/hwmon/acpi_power_meter.c
@@ -883,7 +883,7 @@  static int acpi_power_meter_add(struct acpi_device *device)
 
 	res = setup_attrs(resource);
 	if (res)
-		goto exit_free;
+		goto exit_free_capability;
 
 	resource->hwmon_dev = hwmon_device_register(&device->dev);
 	if (IS_ERR(resource->hwmon_dev)) {
@@ -896,6 +896,8 @@  static int acpi_power_meter_add(struct acpi_device *device)
 
 exit_remove:
 	remove_attrs(resource);
+exit_free_capability:
+	free_capabilities(resource);
 exit_free:
 	kfree(resource);
 exit: