Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp2218863pxm; Fri, 4 Mar 2022 11:38:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJx/99Aoulfvngl/LAFaTV5HsVf36mRW6CiRMINWVWhDeNiqNc537jhmiUsWsossFYfzB7HE X-Received: by 2002:a63:e646:0:b0:378:c5ee:b87f with SMTP id p6-20020a63e646000000b00378c5eeb87fmr19719319pgj.481.1646422699786; Fri, 04 Mar 2022 11:38:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646422699; cv=none; d=google.com; s=arc-20160816; b=qqAkcthZuO8Mbc1zRjdNKW6XBy6bYmD1GI7tJAnsGPE+PZqolMLVYZRNPJF+RJB6b5 T5kta+WOEe7Bc1T4J/kyJCQTwDUXXYEIDjicdoJncD67J4M/MZLmyzdJAtDmp8upe/6A AOJQXVU8rkr3WlfghCflg/Uyap3dsIqcu3c7xcdcAzmCi9/t4JPf3dJbvS0dSeMuqKnu nkgOlxtZlOi57Po4Vc+YNhtpezE+zcYJBPwFR5+acli8ckZwMuNcy3NOtbYb/ewaiKC5 GK/LaDgVYxeEcP70HLVgF+kluw9HOHvojJQuFZhpgit3W3tnvvbccOiKEq6/z2/YRPij ISPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=gi/unIqjj+EE1Nzn6J49QLVgnUqGPh615g5SFKJniNA=; b=riwmilZ0HX0NXu6vH6mQsuTuL1Hulb6A3Uo+6jJoSbhGRwtriPUmrmp1eOuO6n5HsE sM6qcfm56HGe/fQG5xte+wsIk39G/ntEe+YWPCRkDeAqA7fTuSnU4jkupageUOfZNaIE oz42C9ACtAtV19nqLEtap8Bz0OP2L8JXuwDkB/ri40owvN6tENyDt8bgUcR+snHwe7nd 4v4Q5pxYR9fURX01gcUY1LHjPSdDT1dD82C1cChrP1zcJNBip/fHdw5+impK68JSYJWF DouLpbEaxJRzIPWtBaz3dr0uw9JVeGScqkgLnvUOD5HYnmCaIRYl+oMichWSXAm0y2X6 XjmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=nsFYJv4o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id d12-20020a170902cecc00b0014fcbe95c4csi5760558plg.150.2022.03.04.11.38.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Mar 2022 11:38:19 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=nsFYJv4o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3941C2241CF; Fri, 4 Mar 2022 11:15:12 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237165AbiCDRJj (ORCPT + 99 others); Fri, 4 Mar 2022 12:09:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231630AbiCDRJi (ORCPT ); Fri, 4 Mar 2022 12:09:38 -0500 Received: from mail-oi1-x236.google.com (mail-oi1-x236.google.com [IPv6:2607:f8b0:4864:20::236]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7105670045; Fri, 4 Mar 2022 09:08:50 -0800 (PST) Received: by mail-oi1-x236.google.com with SMTP id k2so8409906oia.2; Fri, 04 Mar 2022 09:08:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=gi/unIqjj+EE1Nzn6J49QLVgnUqGPh615g5SFKJniNA=; b=nsFYJv4oWBuqxGTF0HQ7cnTNw6KmBoJ+JvjdHUMiOXYkLuKwr4OPDPojSMLxd+LHlh 5/v7eI1MdqWL7kO974UCQeNRDSRpJKp6xUeRnEIKWDpID81sc/5e7Swpt8Q0mgEEUuXm avEufNonnAOcFHW17q6HQgLwiXF2kdDm68w3UOcrQWSP1VLts+QW8f9Pw1l8MBOOzD9z Ezz+W8xfv7RlbwFJTpdJnqHzeSQYQ7gAODdGGpuumG5DWBej3dN5RAHBE9ciIUoh/C0J SZE142AstxXAFv02FgCJXKSUHplHirhqMIBDxHl61J1Jp/DAXu2iLk3Uz848EPmweC9l y6Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=gi/unIqjj+EE1Nzn6J49QLVgnUqGPh615g5SFKJniNA=; b=kJ2IUQA2uqZ2UJ57YS+6xFTTcmu/oAkJecFwIjQnEKgcidI/vp28R3bSiLsUE8PcAc UZQ3XHcNaWWCZu1Z9mXoR2nsFIXkEfq0u90mrbmNUirIzPD0iNPwT5Wp1slb/evHbneu OSoaNxj/jtOMJOJiX7pRlzhurSXP6gH9U3Pc6b+F9bFDO+cLxOa2Puvp74BAraIXogvx Kji5hhV27Gglh5hJ4K9p10iowiyHdW7KuZXtqeIAKXvVnr1TaNwugOygDl+7JxvVOf38 wAdjZOpFI0E+oNJKAnN7e/bB0Gji/ohcvtLSFQDY+Z/tpddS+gFR3LXR8GcVV1Hg8fFs jBCg== X-Gm-Message-State: AOAM533TzQ57xUQgwKLY40pLTlg2LxsPdAkZxfPFsS8u0c7GZLWgXvOj X2erlM0DpOCohOQrUTDzE2ALQvXT1JYaKc6kX60= X-Received: by 2002:a05:6808:1281:b0:2d9:a01a:4bd6 with SMTP id a1-20020a056808128100b002d9a01a4bd6mr42381oiw.253.1646413729711; Fri, 04 Mar 2022 09:08:49 -0800 (PST) MIME-Version: 1.0 References: <20220303172503.GA1731116@embeddedor> <202203030937.5BFE3EF@keescook> <20220303181957.GA1731711@embeddedor> <20220303204526.GA1733280@embeddedor> In-Reply-To: <20220303204526.GA1733280@embeddedor> From: Alex Deucher Date: Fri, 4 Mar 2022 12:08:38 -0500 Message-ID: Subject: Re: [PATCH][next] drm/amd/display: Fix Wstringop-overflow warnings in dc_link_dp.c To: "Gustavo A. R. Silva" Cc: Kees Cook , Leo Li , "Pan, Xinhui" , Rodrigo Siqueira , LKML , amd-gfx list , David Airlie , Maling list - DRI developers , Daniel Vetter , Alex Deucher , Harry Wentland , =?UTF-8?Q?Christian_K=C3=B6nig?= , linux-hardening@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 3, 2022 at 3:37 PM Gustavo A. R. Silva wrote: > > On Thu, Mar 03, 2022 at 12:19:57PM -0600, Gustavo A. R. Silva wrote: > > On Thu, Mar 03, 2022 at 09:43:28AM -0800, Kees Cook wrote: > > > On Thu, Mar 03, 2022 at 11:25:03AM -0600, Gustavo A. R. Silva wrote: > > > > Fix the following Wstringop-overflow warnings when building with GC= C-11: > > > > > > > > drivers/gpu/drm/amd/amdgpu/../display/dc/core/dc_link_dpia.c:493:17= : warning: =E2=80=98dp_decide_lane_settings=E2=80=99 accessing 4 bytes in a= region of size 1 [-Wstringop-overflow=3D] > > > > > > Can you "show your work" a little more here? I don't actually see the > > > what is getting fixed: > > > > > > enum dc_lane_count { > > > ... > > > LANE_COUNT_FOUR =3D 4, > > > ... > > > LANE_COUNT_DP_MAX =3D LANE_COUNT_FOUR > > > }; > > > > > > struct link_training_settings { > > > ... > > > union dpcd_training_lane dpcd_lane_settings[LANE_COUNT_DP_MAX= ]; > > > }; > > > > > > void dp_hw_to_dpcd_lane_settings( > > > ... > > > union dpcd_training_lane dpcd_lane_settings[LANE_COUNT_DP= _MAX]) > > > { > > > ... > > > } > > > > > > static enum link_training_result dpia_training_cr_transparent( > > > ... > > > struct link_training_settings *lt_settings) > > > { > > > ... > > > dp_decide_lane_settings(lt_settings, dpcd_lane_adjust= , > > > lt_settings->hw_lane_settings, lt_set= tings->dpcd_lane_settings); > > > ... > > > } > > > > > > Everything looks to be the correct size? > > > > Yep; this fix is similar to the one for intel_pm.c in this > > > > commit e7c6e405e171fb33990a12ecfd14e6500d9e5cf2 > > > > where the array size of 8 seems to be fine for all the > > struct members related (pri_latency, spr_latency, cur_latency > > and skl_latency): > > > > drivers/gpu/drm/i915/i915_drv.h:465:struct drm_i915_private { > > ... > > > > drivers/gpu/drm/i915/i915_drv.h-739- struct { > > > > ... > > drivers/gpu/drm/i915/i915_drv.h-745- /* primary */ > > drivers/gpu/drm/i915/i915_drv.h-746- u16 pri_latency[5]; > > drivers/gpu/drm/i915/i915_drv.h-747- /* sprite */ > > drivers/gpu/drm/i915/i915_drv.h-748- u16 spr_latency[5]; > > drivers/gpu/drm/i915/i915_drv.h-749- /* cursor */ > > drivers/gpu/drm/i915/i915_drv.h-750- u16 cur_latency[5]; > > drivers/gpu/drm/i915/i915_drv.h-751- /* > > drivers/gpu/drm/i915/i915_drv.h-752- * Raw watermark memory= latency values > > drivers/gpu/drm/i915/i915_drv.h-753- * for SKL for all 8 le= vels > > drivers/gpu/drm/i915/i915_drv.h-754- * in 1us units. > > drivers/gpu/drm/i915/i915_drv.h-755- */ > > drivers/gpu/drm/i915/i915_drv.h-756- u16 skl_latency[8]; > > > > ... > > drivers/gpu/drm/i915/i915_drv.h-773- } wm; > > ... > > } > > and in this case the ilk_wm_max_level() returns the right maximum size fo= r the > corresponding 'struct wm' member: > > drivers/gpu/drm/i915/intel_pm.c:2993:int ilk_wm_max_level(const struct dr= m_i915_private *dev_priv) > drivers/gpu/drm/i915/intel_pm.c-2994-{ > drivers/gpu/drm/i915/intel_pm.c-2995- /* how many WM levels are we expe= cting */ > drivers/gpu/drm/i915/intel_pm.c-2996- if (HAS_HW_SAGV_WM(dev_priv)) > drivers/gpu/drm/i915/intel_pm.c-2997- return 5; > drivers/gpu/drm/i915/intel_pm.c-2998- else if (DISPLAY_VER(dev_priv) >= =3D 9) > drivers/gpu/drm/i915/intel_pm.c-2999- return 7; > drivers/gpu/drm/i915/intel_pm.c-3000- else if (IS_HASWELL(dev_priv) || = IS_BROADWELL(dev_priv)) > drivers/gpu/drm/i915/intel_pm.c-3001- return 4; > drivers/gpu/drm/i915/intel_pm.c-3002- else if (DISPLAY_VER(dev_priv) >= =3D 6) > drivers/gpu/drm/i915/intel_pm.c-3003- return 3; > drivers/gpu/drm/i915/intel_pm.c-3004- else > drivers/gpu/drm/i915/intel_pm.c-3005- return 2; > drivers/gpu/drm/i915/intel_pm.c-3006-} > > drivers/gpu/drm/i915/intel_pm.c:3009:static void intel_print_wm_latency(s= truct drm_i915_private *dev_priv, > drivers/gpu/drm/i915/intel_pm.c-3010- const = char *name, > drivers/gpu/drm/i915/intel_pm.c-3011- const = u16 wm[]) > drivers/gpu/drm/i915/intel_pm.c-3012-{ > drivers/gpu/drm/i915/intel_pm.c-3013- int level, max_level =3D ilk_wm_m= ax_level(dev_priv); > drivers/gpu/drm/i915/intel_pm.c-3014- > drivers/gpu/drm/i915/intel_pm.c-3015- for (level =3D 0; level <=3D max_= level; level++) { > drivers/gpu/drm/i915/intel_pm.c-3016- unsigned int latency =3D = wm[level]; > drivers/gpu/drm/i915/intel_pm.c-3017- > ... > } > > still GCC warns about this with Wstringop-overread, as it is explained > in commit e7c6e405e171. Did you want to respin with expanded explanation? Alex > > -- > Gustavo > > > > > however GCC warns about accessing bytes beyond the limits, and turning = the > > argument declarations into pointers (removing the over-specified array > > size from the argument declaration) silence the warnings. > > > > -- > > Gustavo