Received: by 2002:a05:6a10:9e8c:0:0:0:0 with SMTP id y12csp344810pxx; Wed, 28 Oct 2020 06:21:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyW8OGegWRU7rJkGlsTXdAP8zIz7sgM/kQd33prwwf2QGO0hBVuIN5MnojBA0rBTee9hK0H X-Received: by 2002:aa7:cd98:: with SMTP id x24mr7455831edv.237.1603891308317; Wed, 28 Oct 2020 06:21:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603891308; cv=none; d=google.com; s=arc-20160816; b=yG2HlWhbncqe4NMKWAqV7kJUlCYSRIrdj5IKKoTZHlcvKADnLvOOMUrehT1e3tM8oj 6VVJsrXQ2CMCppquqg5HDfu9lSqkBjEQzheoKt5bDRPrhF4ctBIV3Ede0PtfsS/C/cVS SrEGExOPptD5G76FpQc2UGs/Al5nJ0hRMQiLVDELhVmqxEoJoTMNnJmPpN6c8uuWorRk loEmtsLPYoj4iuAP2RiztNHI05bY32jYnwK6VTdzKeQXQvYXbKKfQ8Al0yCEshrbwNvW ylTQg6ACLWTjCyX9Aq6asT0Tzco56QS13Vi9L4b6KCnJPxh5TAiBmLU9p+o7X6OdfORu XusA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=wJsTv6Bh8Bp81aFDgD6GN7W8nWRtltShxr80psq7/yY=; b=VgjQS7Cp23l9JSxd+kGRBIwtT/WYQhC3+9eBwa/e4qtT8xt1C5UBT5AZUCfiT/E0mF ciTqWttJla/jFbNomilS9ZbdaypEDQSZb7LfuP4i6KwRr1lZW+WZw3vO0hLXVf4OOw49 NXM1EeDV8SWD1Afc/1fEDgzD4oaA6CNVWwy99hoOsqvH/1yLaK7pOt4N/om7RbEIyjjM BsjLs+zNVTvXm+e/bTZKqgq69ZY2zsETJRpA0tnGm+XFNqQ12AcAp+47Jeip/JX0F5kW I3KoMhECxisDDJVIpEeNmN4+Yt+em5Ub1TB4IbzQ4QBG1/BVoL0EqA+MZ/VG9wN/9XIf eI1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AjdWkJ3R; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p17si2879649ejg.48.2020.10.28.06.21.25; Wed, 28 Oct 2020 06:21:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AjdWkJ3R; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1800507AbgJ0Pfz (ORCPT + 99 others); Tue, 27 Oct 2020 11:35:55 -0400 Received: from mail.kernel.org ([198.145.29.99]:50468 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1799740AbgJ0PdI (ORCPT ); Tue, 27 Oct 2020 11:33:08 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id EE85122202; Tue, 27 Oct 2020 15:33:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603812785; bh=cxuiL3mnDWULZ60LSzmIyrobP5TNhgzpVdTON2kYVoE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AjdWkJ3RtVjCQkbXFm0O1iuLcog6pmHTbtbcCGk0ryTABM0lYF6Oc2QCrVVYeJqOd kmRENUUab/Hv8YhOKO0rYY9HtG9WmvAz2FIRrFC6iHPLQwS6aemDKZbpQmm8VJMgjK O6EtQ8ZBljLGnm0F9BKgx/mVeKV5tUYmC/NoTAjc= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Maxime Ripard , Dave Stevenson , Sasha Levin Subject: [PATCH 5.9 329/757] drm/vc4: crtc: Rework a bit the CRTC state code Date: Tue, 27 Oct 2020 14:49:39 +0100 Message-Id: <20201027135505.978020673@linuxfoundation.org> X-Mailer: git-send-email 2.29.1 In-Reply-To: <20201027135450.497324313@linuxfoundation.org> References: <20201027135450.497324313@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Maxime Ripard [ Upstream commit 427c4a0680a28f87bb9c7bbfeac26b39ef8682ad ] The current CRTC state reset hook in vc4 allocates a vc4_crtc_state structure as a drm_crtc_state, and relies on the fact that vc4_crtc_state embeds drm_crtc_state as its first member, and therefore can be safely cast. However, this is pretty fragile especially since there's no check for this in place, and we're going to need to access vc4_crtc_state member at reset so this looks like a good occasion to make it more robust. Fixes: 6d6e50039187 ("drm/vc4: Allocate the right amount of space for boot-time CRTC state.") Signed-off-by: Maxime Ripard Tested-by: Dave Stevenson Reviewed-by: Dave Stevenson Link: https://patchwork.freedesktop.org/patch/msgid/20200923084032.218619-1-maxime@cerno.tech Signed-off-by: Sasha Levin --- drivers/gpu/drm/vc4/vc4_crtc.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c index 6d8fa6118fc1a..eaad187c41f07 100644 --- a/drivers/gpu/drm/vc4/vc4_crtc.c +++ b/drivers/gpu/drm/vc4/vc4_crtc.c @@ -723,11 +723,18 @@ void vc4_crtc_destroy_state(struct drm_crtc *crtc, void vc4_crtc_reset(struct drm_crtc *crtc) { + struct vc4_crtc_state *vc4_crtc_state; + if (crtc->state) vc4_crtc_destroy_state(crtc, crtc->state); - crtc->state = kzalloc(sizeof(struct vc4_crtc_state), GFP_KERNEL); - if (crtc->state) - __drm_atomic_helper_crtc_reset(crtc, crtc->state); + + vc4_crtc_state = kzalloc(sizeof(*vc4_crtc_state), GFP_KERNEL); + if (!vc4_crtc_state) { + crtc->state = NULL; + return; + } + + __drm_atomic_helper_crtc_reset(crtc, &vc4_crtc_state->base); } static const struct drm_crtc_funcs vc4_crtc_funcs = { -- 2.25.1