| From 354c3b5880f324651755b5c5b8c661ea5b69b536 Mon Sep 17 00:00:00 2001 |
| From: Sean Paul <seanpaul@chromium.org> |
| Date: Thu, 29 Nov 2018 10:04:14 -0500 |
| Subject: drm: Clear state->acquire_ctx before leaving |
| drm_atomic_helper_commit_duplicated_state() |
| |
| [ Upstream commit aa394b0dd68cb00c483e151dcd84713d4d517ed1 ] |
| |
| drm_atomic_helper_commit_duplicated_state() sets state->acquire_ctx to |
| the context given in the argument and leaves it in state after it |
| quits. The lifetime of state and context are not guaranteed to be the |
| same, so we shouldn't leave that pointer hanging around. This patch |
| resets the context to NULL to avoid any oopses. |
| |
| Changes in v2: |
| - Added to the set |
| |
| Suggested-by: Daniel Vetter <daniel@ffwll.ch> |
| Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Sean Paul <seanpaul@chromium.org> |
| Link: https://patchwork.freedesktop.org/patch/msgid/20181129150423.239081-1-sean@poorly.run |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/drm_atomic_helper.c | 8 ++++++-- |
| 1 file changed, 6 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c |
| index 1f08d597b87a..d05ed0521e20 100644 |
| --- a/drivers/gpu/drm/drm_atomic_helper.c |
| +++ b/drivers/gpu/drm/drm_atomic_helper.c |
| @@ -2899,7 +2899,7 @@ EXPORT_SYMBOL(drm_atomic_helper_suspend); |
| int drm_atomic_helper_commit_duplicated_state(struct drm_atomic_state *state, |
| struct drm_modeset_acquire_ctx *ctx) |
| { |
| - int i; |
| + int i, ret; |
| struct drm_plane *plane; |
| struct drm_plane_state *new_plane_state; |
| struct drm_connector *connector; |
| @@ -2918,7 +2918,11 @@ int drm_atomic_helper_commit_duplicated_state(struct drm_atomic_state *state, |
| for_each_new_connector_in_state(state, connector, new_conn_state, i) |
| state->connectors[i].old_state = connector->state; |
| |
| - return drm_atomic_commit(state); |
| + ret = drm_atomic_commit(state); |
| + |
| + state->acquire_ctx = NULL; |
| + |
| + return ret; |
| } |
| EXPORT_SYMBOL(drm_atomic_helper_commit_duplicated_state); |
| |
| -- |
| 2.19.1 |
| |