diff options
author | Inki Dae <inki.dae@samsung.com> | 2021-05-25 19:51:39 +0900 |
---|---|---|
committer | Inki Dae <inki.dae@samsung.com> | 2021-06-11 10:56:38 +0900 |
commit | 445d3bed75de4082c7c7794030ac9a5b8bfde886 (patch) | |
tree | ab67883b8eeff4d2dba8f276f893bb70abae52c5 /drivers/gpu/drm/exynos/exynos_drm_dsi.c | |
parent | a89b6c8f86b9ae245558572b5247dc8ff10f2fe8 (diff) |
drm/exynos: use pm_runtime_resume_and_get()
Use pm_runtime_resume_and_get() instead of pm_runtime_get_sync()
to deal with usage counter. pm_runtime_get_sync() increases the
usage counter even when it failed, which makes callers to forget
to decrease the usage counter and resulted in reference leak.
pm_runtime_resume_and_get() function decreases the usage counter
when it failed internally so it can avoid the reference leak.
Changelog v1:
- Fix an build error reported by kernel test robot of Intel.
Signed-off-by: Inki Dae <inki.dae@samsung.com>
Reported-by: kernel test robot <lkp@intel.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_dsi.c')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_dsi.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 2d2fe5ab26e7..1d777d8c1a83 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1383,7 +1383,12 @@ static void exynos_dsi_enable(struct drm_encoder *encoder) if (dsi->state & DSIM_STATE_ENABLED) return; - pm_runtime_get_sync(dsi->dev); + ret = pm_runtime_resume_and_get(dsi->dev); + if (ret < 0) { + dev_err(dsi->dev, "failed to enable DSI device.\n"); + return; + } + dsi->state |= DSIM_STATE_ENABLED; if (dsi->panel) { |