From: Victor Lu victorchengchi.lu@amd.com
[ Upstream commit 2abaa323d744011982b20b8f3886184d56d23946 ]
[why] drm_atomic_commit was changed so that the caller must free their drm_atomic_state reference on successes.
[how] Add drm_atomic_commit_put after drm_atomic_commit call in dm_force_atomic_commit.
Signed-off-by: Victor Lu victorchengchi.lu@amd.com Reviewed-by: Roman Li Roman.Li@amd.com Acked-by: Anson Jacob Anson.Jacob@amd.com Tested-by: Daniel Wheeler daniel.wheeler@amd.com Signed-off-by: Alex Deucher alexander.deucher@amd.com Signed-off-by: Sasha Levin sashal@kernel.org --- drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c index 7b00e96705b6d..62a2f0491117d 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c @@ -4732,14 +4732,14 @@ static int dm_force_atomic_commit(struct drm_connector *connector)
ret = PTR_ERR_OR_ZERO(conn_state); if (ret) - goto err; + goto out;
/* Attach crtc to drm_atomic_state*/ crtc_state = drm_atomic_get_crtc_state(state, &disconnected_acrtc->base);
ret = PTR_ERR_OR_ZERO(crtc_state); if (ret) - goto err; + goto out;
/* force a restore */ crtc_state->mode_changed = true; @@ -4749,17 +4749,15 @@ static int dm_force_atomic_commit(struct drm_connector *connector)
ret = PTR_ERR_OR_ZERO(plane_state); if (ret) - goto err; - + goto out;
/* Call commit internally with the state we just constructed */ ret = drm_atomic_commit(state); - if (!ret) - return 0;
-err: - DRM_ERROR("Restoring old state failed with %i\n", ret); +out: drm_atomic_state_put(state); + if (ret) + DRM_ERROR("Restoring old state failed with %i\n", ret);
return ret; }