On 29/03/2025 08:45, Christophe JAILLET wrote: > lpass = devm_kzalloc(dev, sizeof(*lpass), GFP_KERNEL); > if (!lpass) > @@ -143,7 +144,15 @@ static int exynos_lpass_probe(struct platform_device *pdev) > pm_runtime_enable(dev); > exynos_lpass_enable(lpass); > > - return devm_of_platform_populate(dev); > + ret = devm_of_platform_populate(dev); > + if (ret) > + goto err_remove_exynos_lpass; > + > + return 0; > + > +err_remove_exynos_lpass: > + exynos_lpass_remove(pdev); You should have here standard unwinding, not calling remove. Or better just convert everything to devm, because mixing devm and non-devm is error prone. Best regards, Krzysztof