* [PATCH] drm/nouveau: Fix runtime PM leak in nouveau_connector_detect()
@ 2026-09-16 18:03 Wentao Liang
2026-09-17 18:23 ` lyude
0 siblings, 1 reply; 2+ messages in thread
From: Wentao Liang @ 2026-09-16 18:03 UTC (permalink / raw)
To: airlied
Cc: bskeggs, dakr, dri-devel, linux-kernel, lyude, maarten.lankhorst,
mripard, nouveau, simona, tzimmermann, Wentao Liang, stable
If nvif_outp_edid_get() fails, nouveau_connector_detect() returns
early without dropping the runtime PM reference taken at the start
of the function, keeping the device powered on until the next
successful detect.
Balance the reference on the error path like the other exit paths
do.
Fixes: 0cd7e0718139 ("drm/nouveau/disp: add output method to fetch edid")
Cc: stable@vger.kernel.org
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
drivers/gpu/drm/nouveau/nouveau_connector.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index cc239492c7f0..4a750d4bf1f4 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -600,8 +600,11 @@ nouveau_connector_detect(struct drm_connector *connector, bool force)
new_edid = drm_get_edid(connector, nv_encoder->i2c);
} else {
ret = nvif_outp_edid_get(&nv_encoder->outp, (u8 **)&new_edid);
- if (ret < 0)
+ if (ret < 0) {
+ pm_runtime_mark_last_busy(dev->dev);
+ pm_runtime_put_autosuspend(dev->dev);
return connector_status_disconnected;
+ }
}
nouveau_connector_set_edid(nv_connector, new_edid);
--
2.34.1
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] drm/nouveau: Fix runtime PM leak in nouveau_connector_detect()
2026-09-16 18:03 [PATCH] drm/nouveau: Fix runtime PM leak in nouveau_connector_detect() Wentao Liang
@ 2026-09-17 18:23 ` lyude
0 siblings, 0 replies; 2+ messages in thread
From: lyude @ 2026-09-17 18:23 UTC (permalink / raw)
To: Wentao Liang, airlied
Cc: bskeggs, dakr, dri-devel, linux-kernel, maarten.lankhorst,
mripard, nouveau, simona, tzimmermann, stable
Nice catch!
Reviewed-by: Lyude Paul <lyude@redhat.com>
Will push to drm-misc-fixes in just a moment
On Wed, 2026-09-16 at 18:03 +0000, Wentao Liang wrote:
> If nvif_outp_edid_get() fails, nouveau_connector_detect() returns
> early without dropping the runtime PM reference taken at the start
> of the function, keeping the device powered on until the next
> successful detect.
>
> Balance the reference on the error path like the other exit paths
> do.
>
> Fixes: 0cd7e0718139 ("drm/nouveau/disp: add output method to fetch
> edid")
> Cc: stable@vger.kernel.org
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
> ---
> drivers/gpu/drm/nouveau/nouveau_connector.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c
> b/drivers/gpu/drm/nouveau/nouveau_connector.c
> index cc239492c7f0..4a750d4bf1f4 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_connector.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
> @@ -600,8 +600,11 @@ nouveau_connector_detect(struct drm_connector
> *connector, bool force)
> new_edid = drm_get_edid(connector,
> nv_encoder->i2c);
> } else {
> ret = nvif_outp_edid_get(&nv_encoder->outp,
> (u8 **)&new_edid);
> - if (ret < 0)
> + if (ret < 0) {
> + pm_runtime_mark_last_busy(dev->dev);
> + pm_runtime_put_autosuspend(dev-
> >dev);
> return
> connector_status_disconnected;
> + }
> }
>
> nouveau_connector_set_edid(nv_connector, new_edid);
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-17 18:23 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-16 18:03 [PATCH] drm/nouveau: Fix runtime PM leak in nouveau_connector_detect() Wentao Liang
2026-09-17 18:23 ` lyude
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®