Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6a11f49 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

ASoC: Fix resource leak in neo1973_gta02_init() error path



Properly free allocated resources in neo1973_gta02_init() error path.

Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
Acked-by: default avatarJassi Brar <jassi.brar@samsung.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 853dc302
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -439,24 +439,20 @@ static int __init neo1973_gta02_init(void)

	/* register bluetooth DAI here */
	ret = snd_soc_register_dai(&neo1973_gta02_snd_device->dev, &bt_dai);
	if (ret) {
		platform_device_put(neo1973_gta02_snd_device);
		return ret;
	}
	if (ret)
		goto err_put_device;

	platform_set_drvdata(neo1973_gta02_snd_device, &neo1973_gta02);
	ret = platform_device_add(neo1973_gta02_snd_device);

	if (ret) {
		platform_device_put(neo1973_gta02_snd_device);
		return ret;
	}
	if (ret)
		goto err_unregister_dai;

	/* Initialise GPIOs used by amp */
	ret = gpio_request(GTA02_GPIO_HP_IN, "GTA02_HP_IN");
	if (ret) {
		pr_err("gta02_wm8753: Failed to register GPIO %d\n", GTA02_GPIO_HP_IN);
		goto err_unregister_device;
		goto err_del_device;
	}

	ret = gpio_direction_output(GTA02_GPIO_HP_IN, 1);
@@ -483,8 +479,12 @@ static int __init neo1973_gta02_init(void)
	gpio_free(GTA02_GPIO_AMP_SHUT);
err_free_gpio_hp_in:
	gpio_free(GTA02_GPIO_HP_IN);
err_unregister_device:
	platform_device_unregister(neo1973_gta02_snd_device);
err_del_device:
	platform_device_del(neo1973_gta02_snd_device);
err_unregister_dai:
	snd_soc_unregister_dai(&neo1973_gta02_snd_device->dev);
err_put_device:
	platform_device_put(neo1973_gta02_snd_device);
	return ret;
}
module_init(neo1973_gta02_init);