2020-05-02 23:36:31

by Qiushi Wu

[permalink] [raw]
Subject: [PATCH] power: supply: fix memory leaks (v2)

From: Qiushi Wu <[email protected]>

In function power_supply_add_hwmon_sysfs(), psyhw->props is
allocated by bitmap_zalloc(). But this pointer is not deallocated
when devm_add_action fail, which lead to a memory leak bug. To fix
this, we replace devm_add_action with devm_add_action_or_reset.

v2:
- Prevent introducing double-free.
- Added fixes tag

Fixes: e67d4dfc9ff19 ("power: supply: Add HWMON compatibility layer")
Signed-off-by: Qiushi Wu <[email protected]>
---
drivers/power/supply/power_supply_hwmon.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/supply/power_supply_hwmon.c b/drivers/power/supply/power_supply_hwmon.c
index 75cf861ba492..7c8296ea0c34 100644
--- a/drivers/power/supply/power_supply_hwmon.c
+++ b/drivers/power/supply/power_supply_hwmon.c
@@ -304,7 +304,7 @@ int power_supply_add_hwmon_sysfs(struct power_supply *psy)
goto error;
}

- ret = devm_add_action(dev, power_supply_hwmon_bitmap_free,
+ ret = devm_add_action_or_reset(dev, power_supply_hwmon_bitmap_free,
psyhw->props);
if (ret)
goto error;
--
2.17.1


2020-05-03 00:22:54

by Sebastian Reichel

[permalink] [raw]
Subject: Re: [PATCH] power: supply: fix memory leaks (v2)

Hi,

On Sat, May 02, 2020 at 06:33:38PM -0500, [email protected] wrote:
> From: Qiushi Wu <[email protected]>
>
> In function power_supply_add_hwmon_sysfs(), psyhw->props is
> allocated by bitmap_zalloc(). But this pointer is not deallocated
> when devm_add_action fail, which lead to a memory leak bug. To fix
> this, we replace devm_add_action with devm_add_action_or_reset.
>
> v2:
> - Prevent introducing double-free.
> - Added fixes tag
>
> Fixes: e67d4dfc9ff19 ("power: supply: Add HWMON compatibility layer")
> Signed-off-by: Qiushi Wu <[email protected]>
> ---

Thanks, queued to power-supply's for-next branch.
Notes for next time:

* I fixed up the subject, please read how to properly send a v2
* I removed the changelog, it should be below the ---

-- Sebastian

> drivers/power/supply/power_supply_hwmon.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/power/supply/power_supply_hwmon.c b/drivers/power/supply/power_supply_hwmon.c
> index 75cf861ba492..7c8296ea0c34 100644
> --- a/drivers/power/supply/power_supply_hwmon.c
> +++ b/drivers/power/supply/power_supply_hwmon.c
> @@ -304,7 +304,7 @@ int power_supply_add_hwmon_sysfs(struct power_supply *psy)
> goto error;
> }
>
> - ret = devm_add_action(dev, power_supply_hwmon_bitmap_free,
> + ret = devm_add_action_or_reset(dev, power_supply_hwmon_bitmap_free,
> psyhw->props);
> if (ret)
> goto error;
> --
> 2.17.1
>


Attachments:
(No filename) (1.46 kB)
signature.asc (849.00 B)
Download all attachments