Nice catch!

Reviewed-by: Lyude Paul <[email protected]>

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: [email protected]
> Signed-off-by: Wentao Liang <[email protected]>
> ---
>  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);

Reply via email to