Re: [PATCH] drm/bridge: microchip-lvds: Fix runtime PM leak in mchp_lvds_enable()

From: Manikandan.M

Date: Thu Sep 17 2026 - 07:18:05 EST


Hi Wentao Liang,

Thanks for the patch, and Sashiko's automated review is correct here —
this needs rework.

pm_runtime_get_sync() bumps the usage count even on failure, so today
that leaked reference is consumed by the put in _disable().Adding
pm_runtime_put_noidle() on the error path makes the later unconditional
pm_runtime_put() underflow the counter.

Also, as of v7.2 the function is mchp_lvds_atomic_enable(), so please
rebase it on to the latest and update the subject/commit message.

On 9/16/26 3:49 PM, Wentao Liang wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> mchp_lvds_enable() resumes the device with pm_runtime_get_sync() and
> returns early when the resume fails. pm_runtime_get_sync() increments
> the runtime PM usage count even when it fails, so returning without
> dropping the reference leaks it and prevents the device from ever
> suspending again once the error has been hit.
>
> Drop the runtime PM reference with pm_runtime_put_noidle() on the
> resume failure path before returning.
>
> Fixes: 179b0769fc5f ("drm/bridge: add lvds controller support for sam9x7")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
> ---
> drivers/gpu/drm/bridge/microchip-lvds.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/bridge/microchip-lvds.c b/drivers/gpu/drm/bridge/microchip-lvds.c
> index 9f4ff82bc6b4..b77ec6ae0a97 100644
> --- a/drivers/gpu/drm/bridge/microchip-lvds.c
> +++ b/drivers/gpu/drm/bridge/microchip-lvds.c
> @@ -127,6 +127,7 @@ static void mchp_lvds_enable(struct drm_bridge *bridge)
> ret = pm_runtime_get_sync(lvds->dev);
> if (ret < 0) {
> dev_err(lvds->dev, "failed to get pm runtime: %d\n", ret);
> + pm_runtime_put_noidle(lvds->dev);
> return;
> }
>
> --
> 2.34.1
>


--
Thanks and Regards,
Manikandan M.