From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 62E92C4363D for ; Wed, 30 Sep 2020 21:30:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 20B292074A for ; Wed, 30 Sep 2020 21:30:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601501452; bh=feeviU9+A/gTyUPoDCemRtabALCS/oslSvMzA1uSTlc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:List-ID:From; b=IQgojMmpelwX68e0ne3ZAIxHXLciZfS3ZD5LUL3lkgMalubi5R4ZZTlxFq2VouS8N BYUoqtDZdv02qqzs71HJgeZu/hht8K8Wu5C5ttzAhAbk3xRsWVWY3rcNroa/sb5RPA TFZKanI2JHRibfAe0FRLPykCiyFnFlQ4D6+GCyLU= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729912AbgI3Vav (ORCPT ); Wed, 30 Sep 2020 17:30:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:52592 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725814AbgI3Vav (ORCPT ); Wed, 30 Sep 2020 17:30:51 -0400 Received: from embeddedor (187-162-31-110.static.axtel.net [187.162.31.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4A19720739; Wed, 30 Sep 2020 21:30:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601501451; bh=feeviU9+A/gTyUPoDCemRtabALCS/oslSvMzA1uSTlc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iOvN2DZkfruxM4tVe4v/noGq5UC5MncnkeoZiocJeejKgelDd1XQHw++sgRbjdkVw 5om65naAvbW/rdeJjUwCC90cIKG5Jk7MHWG+kgO2vNtK29kKitcE4/NVmhpLiKeRmX Mvxb+Rh/naYoC7WrYSwsgeW62an08UQ3yJ0oRYqs= Date: Wed, 30 Sep 2020 16:36:34 -0500 From: "Gustavo A. R. Silva" To: Jann Horn Cc: Stefan Agner , Lucas Stach , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , Thierry Reding , Jonathan Hunter , linux-mtd@lists.infradead.org, linux-tegra@vger.kernel.org, kernel list , linux-hardening@vger.kernel.org Subject: Re: [PATCH][next] mtd: rawnand: Replace one-element array with flexible-array member Message-ID: <20200930213634.GA12855@embeddedor> References: <20200930210824.GA12277@embeddedor> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) Precedence: bulk List-ID: X-Mailing-List: linux-hardening@vger.kernel.org On Wed, Sep 30, 2020 at 11:10:43PM +0200, Jann Horn wrote: > On Wed, Sep 30, 2020 at 11:02 PM Gustavo A. R. Silva > wrote: > > There is a regular need in the kernel to provide a way to declare having > > a dynamically sized set of trailing elements in a structure. Kernel code > > should always use “flexible array members”[1] for these cases. The older > > style of one-element or zero-length arrays should no longer be used[2]. > > But this is not such a case, right? Isn't this a true fixed-size > array? It sounds like you're just changing it because it > pattern-matched on "array of length 1 at the end of a struct". Yeah; I should have changed that 'dynamically' part of the text above a bit. However, as I commented in the text below, in the case that more CS IDs are needed (let's wait for the maintainers to comment on this...) in the future, this change makes the code more maintainable, as for the allocation part, the developer would only have to update the CS_N macro to the number of CS IDs that are needed. Thanks -- Gustavo > > > Refactor the code according to the use of a flexible-array member > > instead of a one-element array. Also, make use of the struct_size() > > helper to calculate the size of the allocation for _nand_. In order > > to keep the code as maintainable as possible and to keep _cs_ as an > > array, add a new macro CS_N to aid in the allocation size calculation, > > in case there is a need for more Chip Select IDs in the future. In the > > meantime, the macro is set to 1. This also avoids having to use a magic > > number '1' as the last argument for struct_size(). > [...] > > diff --git a/drivers/mtd/nand/raw/tegra_nand.c b/drivers/mtd/nand/raw/tegra_nand.c > [...] > > +/* Number of Chip Selects. Currently, only one. */ > > +#define CS_N 1 > > + > > struct tegra_nand_controller { > > struct nand_controller controller; > > struct device *dev; > > @@ -183,7 +186,7 @@ struct tegra_nand_chip { > > u32 config; > > u32 config_ecc; > > u32 bch_config; > > - int cs[1]; > > + int cs[]; > > }; > [...] From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 983D7C4363D for ; Wed, 30 Sep 2020 21:31:53 +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 4238C20739 for ; Wed, 30 Sep 2020 21:31:53 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="X+gE4YM+"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="iOvN2DZk" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4238C20739 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-mtd-bounces+linux-mtd=archiver.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:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=xa733WutVeLCxEpdZtbkkkEhPpL/KweDezcxpbtnr/E=; b=X+gE4YM+ur2HixpeNIV4nVR2O 2iwS0E+vLdRBdZtavG/VnFF3s30lrdiXJW8pnkQnTf5SfkoX9o3UEy2kZeAJK/ImpN/Wb60ysPJvF gcUAx7q2aUvrTOiJzBJl2Qo62LSTCGDzIhIzrYNagcotQrrbJz/3xN6XPoEOaMG+S6Ca91Or18r60 VDl5nC1GeMgazW2Um182vqXPEqZEGzH9IrdKSGczmCxOZbr1dEQ+9VMBK4wEQrOiENd7DZ10v5hcf M8Vf26C3L6VV7tFp2LNNyEUtx40CJfezXmYvZ0sfKsCc6AFRnj25Vfn+y4+pwOE/k3Osmyn0+LPSg u9gj91tsQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNjgc-00011W-Mq; Wed, 30 Sep 2020 21:30:54 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kNjga-00010l-4n for linux-mtd@lists.infradead.org; Wed, 30 Sep 2020 21:30:52 +0000 Received: from embeddedor (187-162-31-110.static.axtel.net [187.162.31.110]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4A19720739; Wed, 30 Sep 2020 21:30:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1601501451; bh=feeviU9+A/gTyUPoDCemRtabALCS/oslSvMzA1uSTlc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=iOvN2DZkfruxM4tVe4v/noGq5UC5MncnkeoZiocJeejKgelDd1XQHw++sgRbjdkVw 5om65naAvbW/rdeJjUwCC90cIKG5Jk7MHWG+kgO2vNtK29kKitcE4/NVmhpLiKeRmX Mvxb+Rh/naYoC7WrYSwsgeW62an08UQ3yJ0oRYqs= Date: Wed, 30 Sep 2020 16:36:34 -0500 From: "Gustavo A. R. Silva" To: Jann Horn Subject: Re: [PATCH][next] mtd: rawnand: Replace one-element array with flexible-array member Message-ID: <20200930213634.GA12855@embeddedor> References: <20200930210824.GA12277@embeddedor> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200930_173052_262691_61835330 X-CRM114-Status: GOOD ( 24.32 ) X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Lucas Stach , Vignesh Raghavendra , Richard Weinberger , kernel list , Stefan Agner , Jonathan Hunter , Thierry Reding , linux-mtd@lists.infradead.org, linux-hardening@vger.kernel.org, Miquel Raynal , linux-tegra@vger.kernel.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+linux-mtd=archiver.kernel.org@lists.infradead.org T24gV2VkLCBTZXAgMzAsIDIwMjAgYXQgMTE6MTA6NDNQTSArMDIwMCwgSmFubiBIb3JuIHdyb3Rl Ogo+IE9uIFdlZCwgU2VwIDMwLCAyMDIwIGF0IDExOjAyIFBNIEd1c3Rhdm8gQS4gUi4gU2lsdmEK PiA8Z3VzdGF2b2Fyc0BrZXJuZWwub3JnPiB3cm90ZToKPiA+IFRoZXJlIGlzIGEgcmVndWxhciBu ZWVkIGluIHRoZSBrZXJuZWwgdG8gcHJvdmlkZSBhIHdheSB0byBkZWNsYXJlIGhhdmluZwo+ID4g YSBkeW5hbWljYWxseSBzaXplZCBzZXQgb2YgdHJhaWxpbmcgZWxlbWVudHMgaW4gYSBzdHJ1Y3R1 cmUuIEtlcm5lbCBjb2RlCj4gPiBzaG91bGQgYWx3YXlzIHVzZSDigJxmbGV4aWJsZSBhcnJheSBt ZW1iZXJz4oCdWzFdIGZvciB0aGVzZSBjYXNlcy4gVGhlIG9sZGVyCj4gPiBzdHlsZSBvZiBvbmUt ZWxlbWVudCBvciB6ZXJvLWxlbmd0aCBhcnJheXMgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkWzJd Lgo+IAo+IEJ1dCB0aGlzIGlzIG5vdCBzdWNoIGEgY2FzZSwgcmlnaHQ/IElzbid0IHRoaXMgYSB0 cnVlIGZpeGVkLXNpemUKPiBhcnJheT8gSXQgc291bmRzIGxpa2UgeW91J3JlIGp1c3QgY2hhbmdp bmcgaXQgYmVjYXVzZSBpdAo+IHBhdHRlcm4tbWF0Y2hlZCBvbiAiYXJyYXkgb2YgbGVuZ3RoIDEg YXQgdGhlIGVuZCBvZiBhIHN0cnVjdCIuCgpZZWFoOyBJIHNob3VsZCBoYXZlIGNoYW5nZWQgdGhh dCAnZHluYW1pY2FsbHknIHBhcnQgb2YgdGhlIHRleHQgYWJvdmUKYSBiaXQuIEhvd2V2ZXIsIGFz IEkgY29tbWVudGVkIGluIHRoZSB0ZXh0IGJlbG93LCBpbiB0aGUgY2FzZSB0aGF0IG1vcmUKQ1Mg SURzIGFyZSBuZWVkZWQgKGxldCdzIHdhaXQgZm9yIHRoZSBtYWludGFpbmVycyB0byBjb21tZW50 IG9uIHRoaXMuLi4pCmluIHRoZSBmdXR1cmUsIHRoaXMgY2hhbmdlIG1ha2VzIHRoZSBjb2RlIG1v cmUgbWFpbnRhaW5hYmxlLCBhcyBmb3IKdGhlIGFsbG9jYXRpb24gcGFydCwgdGhlIGRldmVsb3Bl ciB3b3VsZCBvbmx5IGhhdmUgdG8gdXBkYXRlIHRoZSBDU19OCm1hY3JvIHRvIHRoZSBudW1iZXIg b2YgQ1MgSURzIHRoYXQgYXJlIG5lZWRlZC4KClRoYW5rcwotLQpHdXN0YXZvCgo+IAo+ID4gUmVm YWN0b3IgdGhlIGNvZGUgYWNjb3JkaW5nIHRvIHRoZSB1c2Ugb2YgYSBmbGV4aWJsZS1hcnJheSBt ZW1iZXIKPiA+IGluc3RlYWQgb2YgYSBvbmUtZWxlbWVudCBhcnJheS4gQWxzbywgbWFrZSB1c2Ug b2YgdGhlIHN0cnVjdF9zaXplKCkKPiA+IGhlbHBlciB0byBjYWxjdWxhdGUgdGhlIHNpemUgb2Yg dGhlIGFsbG9jYXRpb24gZm9yIF9uYW5kXy4gSW4gb3JkZXIKPiA+IHRvIGtlZXAgdGhlIGNvZGUg YXMgbWFpbnRhaW5hYmxlIGFzIHBvc3NpYmxlIGFuZCB0byBrZWVwIF9jc18gYXMgYW4KPiA+IGFy cmF5LCBhZGQgYSBuZXcgbWFjcm8gQ1NfTiB0byBhaWQgaW4gdGhlIGFsbG9jYXRpb24gc2l6ZSBj YWxjdWxhdGlvbiwKPiA+IGluIGNhc2UgdGhlcmUgaXMgYSBuZWVkIGZvciBtb3JlIENoaXAgU2Vs ZWN0IElEcyBpbiB0aGUgZnV0dXJlLiBJbiB0aGUKPiA+IG1lYW50aW1lLCB0aGUgbWFjcm8gaXMg c2V0IHRvIDEuIFRoaXMgYWxzbyBhdm9pZHMgaGF2aW5nIHRvIHVzZSBhIG1hZ2ljCj4gPiBudW1i ZXIgJzEnIGFzIHRoZSBsYXN0IGFyZ3VtZW50IGZvciBzdHJ1Y3Rfc2l6ZSgpLgo+IFsuLi5dCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9yYXcvdGVncmFfbmFuZC5jIGIvZHJpdmVy cy9tdGQvbmFuZC9yYXcvdGVncmFfbmFuZC5jCj4gWy4uLl0KPiA+ICsvKiBOdW1iZXIgb2YgQ2hp cCBTZWxlY3RzLiBDdXJyZW50bHksIG9ubHkgb25lLiAqLwo+ID4gKyNkZWZpbmUgQ1NfTiAgICAg ICAgICAgICAgICAgICAxCj4gPiArCj4gPiAgc3RydWN0IHRlZ3JhX25hbmRfY29udHJvbGxlciB7 Cj4gPiAgICAgICAgIHN0cnVjdCBuYW5kX2NvbnRyb2xsZXIgY29udHJvbGxlcjsKPiA+ICAgICAg ICAgc3RydWN0IGRldmljZSAqZGV2Owo+ID4gQEAgLTE4Myw3ICsxODYsNyBAQCBzdHJ1Y3QgdGVn cmFfbmFuZF9jaGlwIHsKPiA+ICAgICAgICAgdTMyIGNvbmZpZzsKPiA+ICAgICAgICAgdTMyIGNv bmZpZ19lY2M7Cj4gPiAgICAgICAgIHUzMiBiY2hfY29uZmlnOwo+ID4gLSAgICAgICBpbnQgY3Nb MV07Cj4gPiArICAgICAgIGludCBjc1tdOwo+ID4gIH07Cj4gWy4uLl0KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eCBNVEQgZGlzY3Vz c2lvbiBtYWlsaW5nIGxpc3QKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0 aW5mby9saW51eC1tdGQvCg==