summaryrefslogtreecommitdiff
path: root/sound/core/init.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2024-05-10 15:29:53 +0200
committerTakashi Iwai <tiwai@suse.de>2024-05-10 15:29:58 +0200
commit73a6bbeca7d0548719f6cd6b9074643b196fbc5a (patch)
treeb8aa90717733658636c4765ceadbb326fe4486fe /sound/core/init.c
parentea89a742daf4317038fbab6776d36726dd7a1e2a (diff)
parent31469e8b286c5f3f707db648d329a315e09bd631 (diff)
Merge branch 'for-linus' into for-next
Pull 6.9-rc devel branch for further updates. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core/init.c')
-rw-r--r--sound/core/init.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/sound/core/init.c b/sound/core/init.c
index 4ed5037d8693..89c8354862c4 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -516,6 +516,14 @@ void snd_card_disconnect(struct snd_card *card)
}
}
+#ifdef CONFIG_PM
+ /* wake up sleepers here before other callbacks for avoiding potential
+ * deadlocks with other locks (e.g. in kctls);
+ * then this notifies the shutdown and sleepers would abort immediately
+ */
+ wake_up_all(&card->power_sleep);
+#endif
+
/* notify all connected devices about disconnection */
/* at this point, they cannot respond to any calls except release() */
@@ -543,7 +551,6 @@ void snd_card_disconnect(struct snd_card *card)
}
#ifdef CONFIG_PM
- wake_up(&card->power_sleep);
snd_power_sync_ref(card);
#endif
}