From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Gustavo A. R. Silva" Subject: Re: [PATCH] iwlwifi: d3: use struct_size() in kzalloc() Date: Fri, 24 Aug 2018 06:58:05 -0500 Message-ID: References: <20180824011540.GA25716@embeddedor.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: Johannes Berg , Emmanuel Grumbach , Luca Coelho , Intel Linux Wireless , Kalle Valo , "David S. Miller" , linux-wireless , Network Development , LKML To: Joe Perches , Kees Cook Return-path: In-Reply-To: Content-Language: en-GB Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org Hi Joe, On 8/23/18 11:33 PM, Joe Perches wrote: > On Thu, 2018-08-23 at 20:03 -0700, Kees Cook wrote: >> On Thu, Aug 23, 2018 at 6:15 PM, Gustavo A. R. Silva >> wrote: >>> One of the more common cases of allocation size calculations is finding >>> the size of a structure that has a zero-sized array at the end, along >>> with memory for some number of elements for that array. For example: >>> >>> struct foo { >>> int stuff; >>> void *entry[]; >>> }; > > Question for Gustavo. > > Did you find any existing instances that are miscalculated? > I found the following bug: https://lore.kernel.org/patchwork/patch/977357/ > I believe there are some cases like: > > size = sizeof(struct foo) + count * sizeof(something); > ptr = kmalloc(size); > memset(ptr + sizeof(struct foo), 0, size - sizeof(struct foo)); > > where something could go wrong and not be detected. > It might be worth it to write a Coccinelle script for this. -- Gustavo