ASoC: Remove locking in snd_soc_{new,free}_ac97_codec()
snd_soc_new_ac97_codec() and snd_soc_free_ac97_codec() are called from within a CODEC's probe() and remove() callbacks. Those will not run concurrently against each other for the same CODEC instance, hence it is not necessary to protect the two functions with a mutex. This removes the last user in the ASoC core of the snd_soc_codec mutex field and will allow us to eventually remove it. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
8ad9f9efcc
Коммит
e3f205a72c
|
@ -2107,13 +2107,9 @@ static struct platform_driver soc_driver = {
|
|||
int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
|
||||
struct snd_ac97_bus_ops *ops, int num)
|
||||
{
|
||||
mutex_lock(&codec->mutex);
|
||||
|
||||
codec->ac97 = kzalloc(sizeof(struct snd_ac97), GFP_KERNEL);
|
||||
if (codec->ac97 == NULL) {
|
||||
mutex_unlock(&codec->mutex);
|
||||
if (codec->ac97 == NULL)
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
codec->ac97->bus = kzalloc(sizeof(struct snd_ac97_bus), GFP_KERNEL);
|
||||
if (codec->ac97->bus == NULL) {
|
||||
|
@ -2132,7 +2128,6 @@ int snd_soc_new_ac97_codec(struct snd_soc_codec *codec,
|
|||
*/
|
||||
codec->ac97_created = 1;
|
||||
|
||||
mutex_unlock(&codec->mutex);
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_new_ac97_codec);
|
||||
|
@ -2302,7 +2297,6 @@ EXPORT_SYMBOL_GPL(snd_soc_set_ac97_ops_of_reset);
|
|||
*/
|
||||
void snd_soc_free_ac97_codec(struct snd_soc_codec *codec)
|
||||
{
|
||||
mutex_lock(&codec->mutex);
|
||||
#ifdef CONFIG_SND_SOC_AC97_BUS
|
||||
soc_unregister_ac97_codec(codec);
|
||||
#endif
|
||||
|
@ -2310,7 +2304,6 @@ void snd_soc_free_ac97_codec(struct snd_soc_codec *codec)
|
|||
kfree(codec->ac97);
|
||||
codec->ac97 = NULL;
|
||||
codec->ac97_created = 0;
|
||||
mutex_unlock(&codec->mutex);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_soc_free_ac97_codec);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче