regulator: Fix memory leak in set_machine_constraints() error paths
PATCH v3 1/1 regulator: Fix memory leak in set_machine_constraints() error paths
Properly kfree rdev->constraints in all set_machine_constraints() error paths. Also properly kfree rdev->constraints in regulator_register() error paths.
Signed-off-by Axel Lin <[email protected]>
--- drivers/regulator/core.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-)
drivers/regulator/core.c +4 -3
@@ -787,7 +787,6 @@ static int machine_constraints_voltage(struct regulator_dev *rdev,if (ret <0 ) {rdev_err (rdev,"failed to apply %duV constraint\n" , rdev->constraints->min_uV); - rdev->constraints =NULL ;return ret; } }
@@ -890,7 +889,6 @@ static int set_machine_constraints(struct regulator_dev *rdev, ret =suspend_prepare (rdev, rdev->constraints->initial_state);if (ret <0 ) {rdev_err (rdev,"failed to set suspend state\n" ); - rdev->constraints =NULL ; goto out; } }
@@ -917,13 +915,15 @@ static int set_machine_constraints(struct regulator_dev *rdev, ret = ops->enable (rdev);if (ret <0 ) {rdev_err (rdev,"failed to enable\n" ); - rdev->constraints =NULL ; goto out; } }print_constraints (rdev); +return 0 ; out: +kfree (rdev->constraints); + rdev->constraints =NULL ;return ret; }
@@ -2694,6 +2694,7 @@ unset_supplies:unset_regulator_supplies (rdev); scrub: +kfree (rdev->constraints);device_unregister (&rdev->dev);/* device core frees rdev */ rdev =ERR_PTR (ret);
Signature · 1 line
1.7.4.1
Quoted 4 lines · Axel Lin
Properly kfree
rdev->constraintsin allset_machine_constraints()error paths. Also properly kfreerdev->constraintsinregulator_register()error paths.Signed-off-by Axel Lin <[email protected]>
Acked-by Mark Brown <[email protected]>
Liam Girdwood
AppliedQuoted 4 lines · Axel Lin
Properly kfree
rdev->constraintsin allset_machine_constraints()error paths. Also properly kfreerdev->constraintsinregulator_register()error paths.Signed-off-by Axel Lin <[email protected]>
Applied.
Thanks
Liam