Commit 4a1b7b6c authored by Eric Anholt's avatar Eric Anholt Committed by Greg Kroah-Hartman

drm/vc4: Allocate the right amount of space for boot-time CRTC state.

commit 6d6e5003 upstream.

Without this, the first modeset would dereference past the allocation
when trying to free the mm node.
Signed-off-by: default avatarEric Anholt <eric@anholt.net>
Tested-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170328201343.4884-1-eric@anholt.net
Fixes: d8dbf44f ("drm/vc4: Make the CRTCs cooperate on allocating display lists.")
Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7a845363
...@@ -842,6 +842,17 @@ static void vc4_crtc_destroy_state(struct drm_crtc *crtc, ...@@ -842,6 +842,17 @@ static void vc4_crtc_destroy_state(struct drm_crtc *crtc,
drm_atomic_helper_crtc_destroy_state(crtc, state); drm_atomic_helper_crtc_destroy_state(crtc, state);
} }
static void
vc4_crtc_reset(struct drm_crtc *crtc)
{
if (crtc->state)
__drm_atomic_helper_crtc_destroy_state(crtc->state);
crtc->state = kzalloc(sizeof(struct vc4_crtc_state), GFP_KERNEL);
if (crtc->state)
crtc->state->crtc = crtc;
}
static const struct drm_crtc_funcs vc4_crtc_funcs = { static const struct drm_crtc_funcs vc4_crtc_funcs = {
.set_config = drm_atomic_helper_set_config, .set_config = drm_atomic_helper_set_config,
.destroy = vc4_crtc_destroy, .destroy = vc4_crtc_destroy,
...@@ -849,7 +860,7 @@ static const struct drm_crtc_funcs vc4_crtc_funcs = { ...@@ -849,7 +860,7 @@ static const struct drm_crtc_funcs vc4_crtc_funcs = {
.set_property = NULL, .set_property = NULL,
.cursor_set = NULL, /* handled by drm_mode_cursor_universal */ .cursor_set = NULL, /* handled by drm_mode_cursor_universal */
.cursor_move = NULL, /* handled by drm_mode_cursor_universal */ .cursor_move = NULL, /* handled by drm_mode_cursor_universal */
.reset = drm_atomic_helper_crtc_reset, .reset = vc4_crtc_reset,
.atomic_duplicate_state = vc4_crtc_duplicate_state, .atomic_duplicate_state = vc4_crtc_duplicate_state,
.atomic_destroy_state = vc4_crtc_destroy_state, .atomic_destroy_state = vc4_crtc_destroy_state,
.gamma_set = vc4_crtc_gamma_set, .gamma_set = vc4_crtc_gamma_set,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment