Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp7058669ybf; Fri, 6 Mar 2020 09:32:47 -0800 (PST) X-Google-Smtp-Source: ADFU+vt/HP5zy1HcRBbuMZjP9TqSP8OxwVA7Osf1Ne6qfGFcVb/tvY26Avu0q/M1LbBUGSh332iC X-Received: by 2002:a9d:6197:: with SMTP id g23mr3527663otk.239.1583515967757; Fri, 06 Mar 2020 09:32:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583515967; cv=none; d=google.com; s=arc-20160816; b=FYtp98ESJdFKZO5Tr+LDybdCp6jsXD/+/Sb9Kly7G8HphL59Yk2WiP8OH0NZk6dt7R KXalCX21G+aULocBXVx9DwNm+1zV7Hst5NGlACeQIMC9HDkLQnsG83HWo03n8VQXbW80 m23HLG7Wvwv2Esp6IaWGOXHa3CYOAhU8MpZ/12wOlQ5IFMqenQseYgULFRmnJKzVMlu6 NoyUx6O0dOdp3Y2wYlmI6nmf48icB40TcEwNEAxCAkL/o4OoXtbq2o5DMXjWGJahDD82 4lcd6no2Zlz3h1109o1HXcENNS2303raoS4ThtT6o4nNrktC4rfvJlafWHEBJPjZ6g1r 9T1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-disposition:mime-version:message-id:subject:cc:to:from:date :dkim-signature; bh=G1RDgxBiyV6Kk2G6RLMWzGPree6/YVdm0hvb7UeIEqk=; b=NvhBXtu14YwP33m5qR7FCYofQEuOqpgldrAhQUCY5cmzUBuqS/+Zcwb4y9s5jqLgP7 U9IfZV5y6rcVrn4tIrTBCrazp/N+OZrVDjMRSAUWLdfHSRN+Ho3JEtC2fs+VVRsF3qin CIiAbYGG7bTsvsaWZgLF4pbkoUPDAN+0CYceN8BXWrsULZ0t29vtmPE84Qz6d4rsBLLk 176V1d6iCSCesyE100kCNu6+D1MRkenD4mNdl+NWCONwTKcgpQzaEN3Bhg94rx4+YOAu ORqmk0ODa4hEyf0oEdsqL8bYRH6ynVba/9jqQlDy+3FybI4+SXdLIzOp9wBn8OTJnn+9 yK/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=eJ5c87zi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 73si41494oii.60.2020.03.06.09.32.34; Fri, 06 Mar 2020 09:32:47 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=eJ5c87zi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726674AbgCFRcR (ORCPT + 99 others); Fri, 6 Mar 2020 12:32:17 -0500 Received: from mail-pj1-f65.google.com ([209.85.216.65]:33678 "EHLO mail-pj1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726162AbgCFRcQ (ORCPT ); Fri, 6 Mar 2020 12:32:16 -0500 Received: by mail-pj1-f65.google.com with SMTP id o21so3671566pjs.0 for ; Fri, 06 Mar 2020 09:32:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:mime-version:content-disposition :content-transfer-encoding; bh=G1RDgxBiyV6Kk2G6RLMWzGPree6/YVdm0hvb7UeIEqk=; b=eJ5c87ziTXTK+rhDA6QRlgfcRU/IdlKxZshAQM2TCEltwHmpXlDjzbuPMRXbX/7SGS X6IcuBDDareaY/S6mEVT0sTK3myUJL+cptTI+1dD6SVbdEuCtEJVaWp1SEPjhfBDYtPO VnfXAUQrEMFY0Nar8GnvXCEnkpF1wckCT89A4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition:content-transfer-encoding; bh=G1RDgxBiyV6Kk2G6RLMWzGPree6/YVdm0hvb7UeIEqk=; b=VFazNQynUmNfIqvn5DiYhHl9f1s6sz7jCtwnhRYcHA6AXq3F5rzlxRXAG9A0dgQJaH QP+fMfc2MOzyfLFN4f0Z94gb2s4yP+vS6TjrXEH0HETOhWdl8tDgnM3hiiaGKr2Zjrrh 4zE8ehBo+YDfgmuKa9sQ7jmoO+DV1y6MCFL3ekn5pNV0iH5MMs1/qQwKFLGVG7/sefGb jCXjNiVWLWd7yJn8bsHs3bKRyA3oJ4EZKlbAJ+XYpSBFNN4xHiPMvnkkY6vm608BVA2f sV75oHQRgRtGRvyoBoAHXZ2e6WEe9N8Wwewcb50iuvJW7pFvD9GnSMKw628Z3wSoy/zO cO9Q== X-Gm-Message-State: ANhLgQ39FEQb2vUgCs/XCm/WqaC1CzwsOeVF9JO+4Riy3f5zrZQ3w7H8 cJYCj06w5xOYDX4tJx+6VHWPuQ== X-Received: by 2002:a17:902:342:: with SMTP id 60mr3878637pld.206.1583515935302; Fri, 06 Mar 2020 09:32:15 -0800 (PST) Received: from www.outflux.net (smtp.outflux.net. [198.145.64.163]) by smtp.gmail.com with ESMTPSA id x190sm37154310pfb.96.2020.03.06.09.32.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2020 09:32:14 -0800 (PST) Date: Fri, 6 Mar 2020 09:32:13 -0800 From: Kees Cook To: Daniel Vetter Cc: Maarten Lankhorst , Maxime Ripard , David Airlie , dri-devel@lists.freedesktop.org, clang-built-linux@googlegroups.com, linux-kernel@vger.kernel.org Subject: [PATCH v2] drm/edid: Distribute switch variables for initialization Message-ID: <202003060930.DDCCB6659@keescook> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Variables declared in a switch statement before any case statements cannot be automatically initialized with compiler instrumentation (as they are not part of any execution flow). With GCC's proposed automatic stack variable initialization feature, this triggers a warning (and they don't get initialized). Clang's automatic stack variable initialization (via CONFIG_INIT_STACK_ALL=y) doesn't throw a warning, but it also doesn't initialize such variables[1]. Note that these warnings (or silent skipping) happen before the dead-store elimination optimization phase, so even when the automatic initializations are later elided in favor of direct initializations, the warnings remain. To avoid these problems, lift such variables up into the next code block. drivers/gpu/drm/drm_edid.c: In function ‘drm_edid_to_eld’: drivers/gpu/drm/drm_edid.c:4395:9: warning: statement will never be executed [-Wswitch-unreachable] 4395 | int sad_count; | ^~~~~~~~~ [1] https://bugs.llvm.org/show_bug.cgi?id=44916 Signed-off-by: Kees Cook --- v2: move into function block instead being switch-local (Ville Syrjälä) --- drivers/gpu/drm/drm_edid.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 805fb004c8eb..46cee78bc175 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -4381,6 +4381,7 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) if (cea_revision(cea) >= 3) { int i, start, end; + int sad_count; if (cea_db_offsets(cea, &start, &end)) { start = 0; @@ -4392,8 +4393,6 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid) dbl = cea_db_payload_len(db); switch (cea_db_tag(db)) { - int sad_count; - case AUDIO_BLOCK: /* Audio Data Block, contains SADs */ sad_count = min(dbl / 3, 15 - total_sad_count); -- 2.20.1 -- Kees Cook