Received: by 2002:a05:6358:111d:b0:dc:6189:e246 with SMTP id f29csp2553549rwi; Tue, 1 Nov 2022 08:59:30 -0700 (PDT) X-Google-Smtp-Source: AMsMyM48Q0pspuFyrXifhqSEpuKd/KqJn3alrZ2SuIIAaphIugZp6zkrGXtyZWVwe2Mi9DNKbpTu X-Received: by 2002:a05:6402:1505:b0:463:1a0c:4db8 with SMTP id f5-20020a056402150500b004631a0c4db8mr15707728edw.70.1667318370264; Tue, 01 Nov 2022 08:59:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667318370; cv=none; d=google.com; s=arc-20160816; b=NGGMsqXGOBgDB398w+3YCX6YnBUC+GSzoFgFnItTqNC81/eYmKjKvtLOWFWV2TnfOM 9rmrIB4IEOxOPRvyIyiK4aIwRnGGO/Qc/4R2NFCjrAkBvB6Sy6Vb+Wk4HwdJgONBKqNA qFX29tA2oe49gsAAx9856pe+qisJzPSisGN6zTd1RotkKPCo7Cvez6+xS0trvoZdgY33 rDDDsqFts8j1eZg/qVnyX/wjqu0+6+6UO+UlrjUjXZtOoPr23yxNBoOFXCM0zdFKPXHc bsXKHlJ7AFLAh1pgEf/dT6AuBTED+L9FoWAJU8AhS3FmqdpdMlk0BGrw0bdE88jj2SA8 pVSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=UqZRXhZ8iJLz18c+MvxYoRFq+rJsubjxLq+l9IkQCHc=; b=K6mqltKd65s4SMoL7n38TXZyMJ2dNKS2I0CT6PASGxef6JGfeaejF/1YMtsohEEif0 sRdpaIdbgVSu8P3GEew1cn9W5nVjKcMbh+bShjmoN0C5YNZ8EWBGTYLLfiemQvSEDT5T aNewlsJurVFHqoBU4J+XHI99aTwzpm7Gh51D1SVgScvjTKOaCoSDyXWh6/xZbc/YWpmt mCnBVQJBS8OON4vpWVTDEHmRO1PIxIwHS4f/HvLhpz8wyUwhFPTlk020m2Smm0GHsmr1 G+A4W0zJNtXUSRFvl23lGLXffbNfflo+wl6vJfKKEKa3TAuUkLFNaDNHbLm1PXCeDmmG FTTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="qKFPc/kz"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gs36-20020a1709072d2400b0078c8dadd4bbsi14404098ejc.742.2022.11.01.08.59.06; Tue, 01 Nov 2022 08:59:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="qKFPc/kz"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230335AbiKAOmb (ORCPT + 96 others); Tue, 1 Nov 2022 10:42:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53792 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229496AbiKAOma (ORCPT ); Tue, 1 Nov 2022 10:42:30 -0400 Received: from mail-oi1-x229.google.com (mail-oi1-x229.google.com [IPv6:2607:f8b0:4864:20::229]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 367D1120B8; Tue, 1 Nov 2022 07:42:27 -0700 (PDT) Received: by mail-oi1-x229.google.com with SMTP id r187so16088923oia.8; Tue, 01 Nov 2022 07:42:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=UqZRXhZ8iJLz18c+MvxYoRFq+rJsubjxLq+l9IkQCHc=; b=qKFPc/kz6f3nkMKSMl3PgJ4WiqQoPQvBVOh3dj4/2HGtY0pUacizp+bA07bsX+mIKB FAN95rJVisV2AU1C2HM1iB+wNK0BFDL29XqLIfVjq+be2MUJaJ32y37avBHQ9VPLeDhl nfY2li78agIuV+Ma3kgvE2qSxXc6NdbPF+3gtzTCihJ0xH08JyoKS0cX/RbRBO6TFZ+Q XcrGn2mFrzdA9Xz6XTEk8jOT+/cC/aJ8vgst8DoewhbiXz2A98Z/UIrtHXr6pORv8ADK fMZMKJOSXWF7Zqm/66APPRtFBtUeD86Nrw8HLXvHcWgp0RzFKV4Im6fftbPLCr2fO/j6 Lnrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UqZRXhZ8iJLz18c+MvxYoRFq+rJsubjxLq+l9IkQCHc=; b=XqOKeOzw9DCEn0PBQtcPC14EEGUlYSqYm3gJlmj0TJW9NZ4kS0xm4Tu0k5oxbm6r2Y g2hPmBjli0h2oxjpzdp2Cs2BYcJ6HbEemqPqbs1g7gSGfUJsvA6FCLkvrWcOvOPvEEs+ hZ0zsUTfiT8dnoehvwYIyVujR7B8usTT5k42qOpfhgGy7fiuHHpvkPKhWA2mF37tRRKw 7r4nW0o/1+TXT0fi8fqbl2q+SWEWS2vVR9Y0pq2FGjY6wBcvBRaEZnGnxVQyTeSba3TL 4aS4YcPYx9145fTSg7EN0GTJXf/GEDDekmTz2/KyBjm7TS5A9Wdq9R65NFSE3BReGDCO 3zlQ== X-Gm-Message-State: ACrzQf2rTJZX4quS+VA/wM/sXyKJuR4UHILfjKFEvhgyW/uc7tm8BPZ9 z4V/VSH1uxeOq0zq5G68Atfe5qpKqVgRVVb1oPsZdDrA X-Received: by 2002:a05:6808:14d2:b0:354:c733:abd3 with SMTP id f18-20020a05680814d200b00354c733abd3mr10232550oiw.96.1667313746565; Tue, 01 Nov 2022 07:42:26 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Alex Deucher Date: Tue, 1 Nov 2022 10:42:14 -0400 Message-ID: Subject: Re: [PATCH v2] [next] drm/radeon: Replace one-element array with flexible-array member To: Paulo Miguel Almeida Cc: Alex Deucher , =?UTF-8?Q?Christian_K=C3=B6nig?= , "Pan, Xinhui" , David Airlie , Daniel Vetter , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 Fri, Oct 28, 2022 at 11:32 PM Paulo Miguel Almeida wrote: > > One-element arrays are deprecated, and we are replacing them with > flexible array members instead. So, replace one-element array with > flexible-array member in struct _ATOM_FAKE_EDID_PATCH_RECORD and > refactor the rest of the code accordingly. > > It's worth mentioning that doing a build before/after this patch results > in no binary output differences. > > This helps with the ongoing efforts to tighten the FORTIFY_SOURCE > routines on memcpy() and help us make progress towards globally > enabling -fstrict-flex-arrays=3 [1]. This seems like a worthy goal, and I'm not opposed to the patch per se, but it seems a bit at odds with what this header represents. atombios.h represents the memory layout of the data stored in the ROM on the GPU. This changes the memory layout of that ROM. We can work around that in the driver code, but if someone were to take this header to try and write some standalone tool or use it for something else in the kernel, it would not reflect reality. Alex > > Link: https://github.com/KSPP/linux/issues/79 > Link: https://github.com/KSPP/linux/issues/239 > Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101836 [1] > > Signed-off-by: Paulo Miguel Almeida > --- > Changelog: > > v2: no binary output differences patch; report binary changes findings > on commit log. Res: Kees Cook. > > This request was made in an identical, yet different, patch but the > same feedback applies. > https://lore.kernel.org/lkml/Y1x3MtRJ8ckXxlJn@mail.google.com/ > > v1: https://lore.kernel.org/lkml/Y1trhRE3nK5iAY6q@mail.google.com/ > --- > drivers/gpu/drm/radeon/atombios.h | 2 +- > drivers/gpu/drm/radeon/radeon_atombios.c | 7 +++++-- > 2 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/atombios.h b/drivers/gpu/drm/radeon/atombios.h > index da35a970fcc0..235e59b547a1 100644 > --- a/drivers/gpu/drm/radeon/atombios.h > +++ b/drivers/gpu/drm/radeon/atombios.h > @@ -3615,7 +3615,7 @@ typedef struct _ATOM_FAKE_EDID_PATCH_RECORD > { > UCHAR ucRecordType; > UCHAR ucFakeEDIDLength; > - UCHAR ucFakeEDIDString[1]; // This actually has ucFakeEdidLength elements. > + UCHAR ucFakeEDIDString[]; // This actually has ucFakeEdidLength elements. > } ATOM_FAKE_EDID_PATCH_RECORD; > > typedef struct _ATOM_PANEL_RESOLUTION_PATCH_RECORD > diff --git a/drivers/gpu/drm/radeon/radeon_atombios.c b/drivers/gpu/drm/radeon/radeon_atombios.c > index 204127bad89c..4ad5a328d920 100644 > --- a/drivers/gpu/drm/radeon/radeon_atombios.c > +++ b/drivers/gpu/drm/radeon/radeon_atombios.c > @@ -1727,8 +1727,11 @@ struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct > } > } > record += fake_edid_record->ucFakeEDIDLength ? > - fake_edid_record->ucFakeEDIDLength + 2 : > - sizeof(ATOM_FAKE_EDID_PATCH_RECORD); > + struct_size(fake_edid_record, > + ucFakeEDIDString, > + fake_edid_record->ucFakeEDIDLength) : > + /* empty fake edid record must be 3 bytes long */ > + sizeof(ATOM_FAKE_EDID_PATCH_RECORD) + 1; > break; > case LCD_PANEL_RESOLUTION_RECORD_TYPE: > panel_res_record = (ATOM_PANEL_RESOLUTION_PATCH_RECORD *)record; > -- > 2.37.3 >