[alsa-devel] [PATCH] ASoC: core: lock client_mutex while removing link components
Removing link components results in topology unloading. So, acquire the client_mutex before removing components in soc_remove_link_components. This will prevent the lockdep warning seen when dai links are removed during topology removal.
Signed-off-by: Ranjani Sridharan ranjani.sridharan@linux.intel.com --- sound/soc/soc-core.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index ce8c057bcd5b..bbb52fbd195e 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1010,12 +1010,14 @@ static void soc_remove_link_components(struct snd_soc_card *card, struct snd_soc_component *component; struct snd_soc_rtdcom_list *rtdcom;
+ mutex_lock(&client_mutex); for_each_rtdcom(rtd, rtdcom) { component = rtdcom->component;
if (component->driver->remove_order == order) soc_remove_component(component); } + mutex_unlock(&client_mutex); }
static void soc_remove_dai_links(struct snd_soc_card *card)
On 5/23/19 12:12 PM, Ranjani Sridharan wrote:
Removing link components results in topology unloading. So, acquire the client_mutex before removing components in soc_remove_link_components. This will prevent the lockdep warning seen when dai links are removed during topology removal.
Signed-off-by: Ranjani Sridharan ranjani.sridharan@linux.intel.com
GitHub issue: https://github.com/thesofproject/linux/issues/967 for more details.
sound/soc/soc-core.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index ce8c057bcd5b..bbb52fbd195e 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1010,12 +1010,14 @@ static void soc_remove_link_components(struct snd_soc_card *card, struct snd_soc_component *component; struct snd_soc_rtdcom_list *rtdcom;
mutex_lock(&client_mutex); for_each_rtdcom(rtd, rtdcom) { component = rtdcom->component;
if (component->driver->remove_order == order) soc_remove_component(component); }
mutex_unlock(&client_mutex); }
static void soc_remove_dai_links(struct snd_soc_card *card)
participants (2)
-
Pierre-Louis Bossart
-
Ranjani Sridharan