From patchwork Wed Sep 23 08:40:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maxime Ripard X-Patchwork-Id: 11794291 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 79F88618 for ; Wed, 23 Sep 2020 08:42:22 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3EF71221F0 for ; Wed, 23 Sep 2020 08:42:22 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="eFodk7rn"; dkim=temperror (0-bit key) header.d=cerno.tech header.i=@cerno.tech header.b="FzKNyllA"; dkim=temperror (0-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="UVJNgGOe" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3EF71221F0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=cerno.tech Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From: Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=iaTLJ6619vIRsecEML/YEC9fmJVSsdNTdgI6eFqBP1s=; b=eFodk7rn0q7lNSp6WqpcQZPha7 lE9BSaYac4jbygAfxWKOBDHuZMYQI4io1Z2dSsGc9/xrZlqSU2FexSnm6lFb7TyYqjIv5eBpf5zU3 Quy8Vz0hmWHhXYuk9jxVLaI7c1pEKFiY8gBqLELpCnuPGtqUn1iqxAqiK89pf4tWecXEWWgcBCVXX v0c5UTG4mklKvy+bvoIgqcMwL2fGNhgfpm+/p6wqTzURA24WBXmAofs8rDf1MzCGCCXiM3iIsTFha pfznpF82rTAg5JolpKuqIUcrznOR0pgx+KAQKk0BavSeRqPBLL/DCzErPfivwy7/OE08n4tUFbtgp DZSOElyg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kL0KM-0006t4-Rs; Wed, 23 Sep 2020 08:40:38 +0000 Received: from out4-smtp.messagingengine.com ([66.111.4.28]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kL0KK-0006sI-03; Wed, 23 Sep 2020 08:40:36 +0000 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id F206C5C024B; Wed, 23 Sep 2020 04:40:34 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute4.internal (MEProxy); Wed, 23 Sep 2020 04:40:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cerno.tech; h= from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; s=fm3; bh=KiG29+cx4RKmN1lcyumz822CbC Dd70GdGTr7Brbk0gI=; b=FzKNyllATASbcobohcAkcm2kf10ZkAMUXc2cWdOKw2 0aWKCjaybnl7xC1xnpPa8Rz5BWNASmFiTY7c+zD+USweLfTgU+0LZGSQqiVJMD60 DNJgxpPXndRu7mnkIE+je9+OwU1K/5IeOhWfIm631PTbjejIvBvJ9lWb5is+o6gz PAF6UORmTEAYJebxbjlMqIhil8FuaBx3p6xpgWS74izXRQeSlm3BePwqxiPul8Qq sokANGtk5lOPRKacqxzA/CuDo/XExSq412U+cwGUHqaAPBDa2F8lD+BJ347L2ioX CmjdLa5kow7dAufcDrnNMH98qy++kfauvGu5QOtF6J/g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :message-id:mime-version:subject:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=KiG29+cx4RKmN1lcy umz822CbCDd70GdGTr7Brbk0gI=; b=UVJNgGOeirWNRrfnkMR8a2no1P/13cHpN PkfuXDfSwRAPgjyyKyqCtNY2KV0QSaIfKOYI2MJZBbjkzrcTL7259ewrtJgNfcKt +U9IPeFI6Ch4qghRZVri3mU1JIDVnzWzpS2GjDxG0ihgpzZpcqTBwAXw8HWkkWZ4 4cPkxDvB/tmjTHLL0EPyqOx0AMGHwZProZP7agbJcYR0M+yt0n0l/1mlQUI2rihP zPtiXZ32DqCY4lFXAIWU07obOOfuSI2oREu41hiN89D3S+pKvIi43ZItwww2GqZ2 Wik8PnlNED1itAjD+zFybxERVMpEAleRKGiQsRakataIGVrf82p2w== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedujedrudeigddtiecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenuc fjughrpefhvffufffkofgggfestdekredtredttdenucfhrhhomhepofgrgihimhgvucft ihhprghrugcuoehmrgigihhmvgestggvrhhnohdrthgvtghhqeenucggtffrrghtthgvrh hnpeejffehuddvvddvlefhgeelleffgfeijedvhefgieejtdeiueetjeetfeeukeejgeen ucfkphepledtrdekledrieekrdejieenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpehmrgigihhmvgestggvrhhnohdrthgvtghh X-ME-Proxy: Received: from localhost (lfbn-tou-1-1502-76.w90-89.abo.wanadoo.fr [90.89.68.76]) by mail.messagingengine.com (Postfix) with ESMTPA id 2EDC9328005D; Wed, 23 Sep 2020 04:40:34 -0400 (EDT) From: Maxime Ripard To: Eric Anholt Subject: [PATCH v2 1/2] drm/vc4: crtc: Rework a bit the CRTC state code Date: Wed, 23 Sep 2020 10:40:31 +0200 Message-Id: <20200923084032.218619-1-maxime@cerno.tech> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200923_044036_098525_80874BA6 X-CRM114-Status: GOOD ( 13.99 ) X-Spam-Score: -0.9 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [66.111.4.28 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [66.111.4.28 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tim Gover , Dave Stevenson , dri-devel@lists.freedesktop.org, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, Phil Elwell , linux-arm-kernel@lists.infradead.org, Maxime Ripard Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org 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 casted. 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. Signed-off-by: Maxime Ripard Tested-by: Dave Stevenson Reviewed-by: Dave Stevenson --- Changes from v1: - new patch --- 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 a393f93390a2..7ef20adedee5 100644 --- a/drivers/gpu/drm/vc4/vc4_crtc.c +++ b/drivers/gpu/drm/vc4/vc4_crtc.c @@ -852,11 +852,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 = {