From patchwork Mon Oct 17 22:13:39 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101675 Delivered-To: patch@linaro.org Received: by 10.140.97.247 with SMTP id m110csp596791qge; Mon, 17 Oct 2016 15:16:05 -0700 (PDT) X-Received: by 10.66.178.78 with SMTP id cw14mr33480308pac.206.1476742565372; Mon, 17 Oct 2016 15:16:05 -0700 (PDT) Return-Path: Received: from gabe.freedesktop.org (gabe.freedesktop.org. [131.252.210.177]) by mx.google.com with ESMTPS id lm5si27103326pab.26.2016.10.17.15.16.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 17 Oct 2016 15:16:05 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) client-ip=131.252.210.177; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of dri-devel-bounces@lists.freedesktop.org designates 131.252.210.177 as permitted sender) smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1A3186E32E; Mon, 17 Oct 2016 22:16:01 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.187]) by gabe.freedesktop.org (Postfix) with ESMTPS id 119B96E32E for ; Mon, 17 Oct 2016 22:15:58 +0000 (UTC) Received: from wuerfel.lan. ([78.43.20.153]) by mrelayeu.kundenserver.de (mreue004) with ESMTPA (Nemesis) id 0M2HkO-1cm1Ms17JM-00s8it; Tue, 18 Oct 2016 00:15:38 +0200 From: Arnd Bergmann To: David Airlie Subject: [PATCH 18/28] drm: avoid uninitialized timestamp use in wait_vblank Date: Tue, 18 Oct 2016 00:13:39 +0200 Message-Id: <20161017221355.1861551-6-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20161017220342.1627073-1-arnd@arndb.de> References: <20161017220342.1627073-1-arnd@arndb.de> X-Provags-ID: V03:K0:BDOatE2PMcfnfn2dMXFhgP453G8O4+zqCixDWvicHfyCe7hYSa/ B38bMms280WWp8DrttdtWChM3fT09wWGKFIzofAnnEYVW1lnsJNqfCc+CWS/5D3rhlb2w2J bb5JDz2+t8cNVMCGPNagIN+axAIYqbunk7cKNERsYoHD6kvZIXEX515FRIH6dYVHNHgD8Kv dqoGWaw6JcJfzTwztXYBg== X-UI-Out-Filterresults: notjunk:1; V01:K0:Zqbn8kIuckU=:Ur9LfWQaRTwPSvmZoi34ov qvOL+mVuGvJVaB3yjJ3W2r0yQQPEamNZemd6mnX5DfjSNkrmwYrklfzHhY/pnLF/8jOnj24YL Ah3YnagDsBuxHRxKR/U9V5xoY+CvjQtsqxlWchRDqbp0qolgsLvRJcvpBK5y+J4Li4PKyfST6 JJUaUL8znLFikLO62Dg6a6LKuCwHdSL+QaIYOTvf07EElosX4TGgoFjLb9IRDVCP+qwr4h5za xTygRfUxfqa0mIi96TuvTrgi6IN57W1jsuPuL8zeTnLdkaCHM4zQlFhPuBnHjNudYSFNZ65tU Yzi5jVZIx7t69G0gUBuvXoqd02phffATjUgoLazISYPMnRbyX/CBGtKOKn+FmprsMmpkciMGP XHH0qE4S1wzZaGKt3IoFerMWJ0Iqw08CBLNLhJ5Pa1f5t5bRvqnVmBP+v2JQ0Br2JYmD7lwul gwGETZ0EdFnYCDPJej2CZ3MoNpy53xP+UdQs9SNU6p6DjNDfQ0xmtttPgRvhmcvKy+4rMXMLr c7dSof7o5O5kC7oQ2bE6VaEW3wR5iVu4coI/wRf4jMEsyZDcIjzdBbHzdHFEIMMEVMhqV1ESW dbkWZrIS8pMVkjafPfmAWbOcqViscIrAkMLLDPmzQGktXNEvsnvWSm44S8wHOyI8v98DJLNx+ Bsp6sU39l/8NMcEP8qT1UvWeP8sgjgROMjElhnSNx1XgEBi+HZpfmCvZf2qCHHE9yMqM= Cc: Arnd Bergmann , Daniel Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Gustavo Padovan , Matthew Auld , Alex Deucher , Dave Airlie , Linus Torvalds X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" gcc warns about the timestamp in drm_wait_vblank being possibly used without an initialization: drivers/gpu/drm/drm_irq.c: In function 'drm_crtc_send_vblank_event': drivers/gpu/drm/drm_irq.c:992:24: error: 'now.tv_usec' may be used uninitialized in this function [-Werror=maybe-uninitialized] drivers/gpu/drm/drm_irq.c:1069:17: note: 'now.tv_usec' was declared here drivers/gpu/drm/drm_irq.c:991:23: error: 'now.tv_sec' may be used uninitialized in this function [-Werror=maybe-uninitialized] This can happen if drm_vblank_count_and_time() returns 0 in its error path. To sanitize the error case, I'm changing that function to return a zero timestamp when it fails. Fixes: e6ae8687a87b ("drm: idiot-proof vblank") Reviewed-by: David Herrmann Cc: Rob Clark Cc: Daniel Vetter Signed-off-by: Arnd Bergmann --- First submitted in January 2016, second submission in February, the patch is still required. drivers/gpu/drm/drm_irq.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index b969a64..48a6167 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -952,8 +952,10 @@ static u32 drm_vblank_count_and_time(struct drm_device *dev, unsigned int pipe, u32 vblank_count; unsigned int seq; - if (WARN_ON(pipe >= dev->num_crtcs)) + if (WARN_ON(pipe >= dev->num_crtcs)) { + *vblanktime = (struct timeval) { 0 }; return 0; + } do { seq = read_seqbegin(&vblank->seqlock);