Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753522AbdC2Gac (ORCPT ); Wed, 29 Mar 2017 02:30:32 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36807 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753037AbdC2Gab (ORCPT ); Wed, 29 Mar 2017 02:30:31 -0400 Date: Wed, 29 Mar 2017 08:30:17 +0200 From: Daniel Vetter To: Eric Anholt Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] drm/vc4: Allocate the right amount of space for boot-time CRTC state. Message-ID: <20170329063017.4llrtmqofrcccotv@phenom.ffwll.local> Mail-Followup-To: Eric Anholt , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20170328201343.4884-1-eric@anholt.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170328201343.4884-1-eric@anholt.net> X-Operating-System: Linux phenom 4.9.0-2-amd64 User-Agent: NeoMutt/20170306 (1.8.0) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2034 Lines: 57 On Tue, Mar 28, 2017 at 01:13:43PM -0700, Eric Anholt wrote: > Without this, the first modeset would dereference past the allocation > when trying to free the mm node. > > Signed-off-by: Eric Anholt > Tested-by: Stefan Wahren Fixes: d8dbf44f13b9 ("drm/vc4: Make the CRTCs cooperate on allocating display lists.") Cc: # v4.6+ Reviewed-by: Daniel Vetter > --- > drivers/gpu/drm/vc4/vc4_crtc.c | 13 ++++++++++++- > 1 file changed, 12 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c > index 24edd0c22cc9..9d91a40e4345 100644 > --- a/drivers/gpu/drm/vc4/vc4_crtc.c > +++ b/drivers/gpu/drm/vc4/vc4_crtc.c > @@ -845,6 +845,17 @@ static void vc4_crtc_destroy_state(struct drm_crtc *crtc, > 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 = { > .set_config = drm_atomic_helper_set_config, > .destroy = vc4_crtc_destroy, > @@ -852,7 +863,7 @@ static const struct drm_crtc_funcs vc4_crtc_funcs = { > .set_property = NULL, > .cursor_set = 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_destroy_state = vc4_crtc_destroy_state, > .gamma_set = vc4_crtc_gamma_set, > -- > 2.11.0 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch