[PATCH] drm/nouveau: Remove the audio device link on component unbind

From: Wentao Liang

Date: Tue Nov 03 2026 - 02:03:38 EST


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@xxxxxxxxxxxxxxx
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
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