Unverified Commit 1e5351ba authored by Herve Codina's avatar Herve Codina Committed by Mark Brown
Browse files

ASoC: cs4271: Disable regulators in component_probe() error path



The commit 9a397f47 ("ASoC: cs4271: add regulator consumer support")
has introduced regulators in the driver.

Regulators are enabled at the beginning of component_probe() but they
are not disabled on errors. This can lead to unbalanced enable/disable.

Fix the error path to disable regulators on errors.

Fixes: 9a397f47 ("ASoC: cs4271: add regulator consumer support")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarHerve Codina <herve.codina@bootlin.com>
Reviewed-by: default avatarAlexander Sverdlin <alexander.sverdlin@gmail.com>
Link: https://patch.msgid.link/20251029093921.624088-3-herve.codina@bootlin.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent e2ff7154
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -581,17 +581,17 @@ static int cs4271_component_probe(struct snd_soc_component *component)

	ret = regcache_sync(cs4271->regmap);
	if (ret < 0)
		return ret;
		goto err_disable_regulators;

	ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
				 CS4271_MODE2_PDN | CS4271_MODE2_CPEN,
				 CS4271_MODE2_PDN | CS4271_MODE2_CPEN);
	if (ret < 0)
		return ret;
		goto err_disable_regulators;
	ret = regmap_update_bits(cs4271->regmap, CS4271_MODE2,
				 CS4271_MODE2_PDN, 0);
	if (ret < 0)
		return ret;
		goto err_disable_regulators;
	/* Power-up sequence requires 85 uS */
	udelay(85);

@@ -601,6 +601,10 @@ static int cs4271_component_probe(struct snd_soc_component *component)
				   CS4271_MODE2_MUTECAEQUB);

	return 0;

err_disable_regulators:
	regulator_bulk_disable(ARRAY_SIZE(cs4271->supplies), cs4271->supplies);
	return ret;
}

static void cs4271_component_remove(struct snd_soc_component *component)