mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] drm/nouveau: Remove the audio device link on component unbind
@ 2026-11-03  7:03 Wentao Liang
  2026-11-03  7:26 ` Krzysztof Kozlowski
  0 siblings, 1 reply; 2+ messages in thread
From: Wentao Liang @ 2026-11-03  7:03 UTC (permalink / raw)
  To: lyude, dakr; +Cc: nouveau, dri-devel, linux-kernel, Wentao Liang, stable

nv50_audio_component_bind() creates a stateless device link from the HDA
device to the GPU. Component unbind clears the audio component pointers
but never removes that link. Stateless links are reference counted and
must be explicitly released by their caller, so repeated component binds
retain a link reference on every cycle.

Remove the link after disconnecting the audio component in unbind. This
also covers a later failure of the HDA component master's bind callback.

Fixes: 742db30c4ee6 ("drm/nouveau: Add HD-audio component notifier support")
Cc: stable@vger.kernel.org
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/gpu/drm/nouveau/dispnv50/disp.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/nouveau/dispnv50/disp.c b/drivers/gpu/drm/nouveau/dispnv50/disp.c
index e91130f93db6..bcfddb7008ac 100644
--- a/drivers/gpu/drm/nouveau/dispnv50/disp.c
+++ b/drivers/gpu/drm/nouveau/dispnv50/disp.c
@@ -672,6 +672,8 @@ nv50_audio_component_unbind(struct device *kdev, struct device *hda_kdev,
 	acomp->ops = NULL;
 	acomp->dev = NULL;
 	drm_modeset_unlock_all(drm->dev);
+
+	device_link_remove(hda_kdev, kdev);
 }
 
 static const struct component_ops nv50_audio_component_bind_ops = {
-- 
2.34.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-03  7:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-03  7:03 [PATCH] drm/nouveau: Remove the audio device link on component unbind Wentao Liang
2026-11-03  7:26 ` Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®