Skip to content

Commit 63fe298

Browse files
krzkbroonie
authored andcommitted
ASoC: codecs: wcd9375: Fix double free of regulator supplies
Driver gets regulator supplies in probe path with devm_regulator_bulk_get(), so should not call regulator_bulk_free() in error and remove paths to avoid double free. Fixes: 216d041 ("ASoC: codecs: wcd937x: Remove separate handling for vdd-buck supply") Cc: [email protected] Signed-off-by: Krzysztof Kozlowski <[email protected]> Link: https://patch.msgid.link/20250526-b4-b4-asoc-wcd9395-vdd-px-fixes-v1-3-0b8a2993b7d3@linaro.org Signed-off-by: Mark Brown <[email protected]>
1 parent dc59189 commit 63fe298

File tree

1 file changed

+1
-5
lines changed

1 file changed

+1
-5
lines changed

sound/soc/codecs/wcd937x.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2944,10 +2944,8 @@ static int wcd937x_probe(struct platform_device *pdev)
29442944
return dev_err_probe(dev, ret, "Failed to get supplies\n");
29452945

29462946
ret = regulator_bulk_enable(WCD937X_MAX_BULK_SUPPLY, wcd937x->supplies);
2947-
if (ret) {
2948-
regulator_bulk_free(WCD937X_MAX_BULK_SUPPLY, wcd937x->supplies);
2947+
if (ret)
29492948
return dev_err_probe(dev, ret, "Failed to enable supplies\n");
2950-
}
29512949

29522950
wcd937x_dt_parse_micbias_info(dev, wcd937x);
29532951

@@ -2983,7 +2981,6 @@ static int wcd937x_probe(struct platform_device *pdev)
29832981

29842982
err_disable_regulators:
29852983
regulator_bulk_disable(WCD937X_MAX_BULK_SUPPLY, wcd937x->supplies);
2986-
regulator_bulk_free(WCD937X_MAX_BULK_SUPPLY, wcd937x->supplies);
29872984

29882985
return ret;
29892986
}
@@ -3000,7 +2997,6 @@ static void wcd937x_remove(struct platform_device *pdev)
30002997
pm_runtime_dont_use_autosuspend(dev);
30012998

30022999
regulator_bulk_disable(WCD937X_MAX_BULK_SUPPLY, wcd937x->supplies);
3003-
regulator_bulk_free(WCD937X_MAX_BULK_SUPPLY, wcd937x->supplies);
30043000
}
30053001

30063002
#if defined(CONFIG_OF)

0 commit comments

Comments
 (0)