Received: by 10.213.65.68 with SMTP id h4csp687310imn; Tue, 13 Mar 2018 18:18:09 -0700 (PDT) X-Google-Smtp-Source: AG47ELv5TAzH0F4FjRl+ewcDL8bRB8EZR4249jyfE6IQlrVhH3L+Sgoeout6Xd5bz5zlMZJoy+6Y X-Received: by 10.101.101.133 with SMTP id u5mr2096002pgv.151.1520990289795; Tue, 13 Mar 2018 18:18:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520990289; cv=none; d=google.com; s=arc-20160816; b=d8dDp2r1xmLtbXkrndSCO8KziwE2Rnd9RJen3vTa5JHrWMfblZnY904RjnCfEpLQht yHxoAoiXdsx/whM5htZdVCDRt8rK4aGjSFJw5za207IuUbjSwk+ULZSl5PmT8uVOYH0K WTR7SQegNODULIKbl3ev/EXAHIjIjCgc9nY6jOHoo4/ECQMc82F+bbpW3QWHU2NcJALG aQYDBKOsEuP0JRmA5Wx0jmW+aO/t7O3pyqPhySCBo66s0W+81saKaGRtjH2IQooetKGZ UvkEbZeaUSte5VbYTltvm3dr17YVsf3rZfD287My1aSGNlEZbjWyDFzB14Clp9o5+Eud w+fg== 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-language:in-reply-to:mime-version:user-agent:date :message-id:references:cc:to:from:subject:arc-authentication-results; bh=gi8YNkS66CDqPFDEj5VXMvsuPpjrTxIIolROxVIkjqs=; b=KeIusqiiW1eiY6RRUZvi08j3lvSD/YMYfr8wPXOO+XLcuX+cGzfuPQogEGa0NR7hPb tyz4xvip+0Hn9TQ2GtqUYAEOPLZu6hbfYyocC+5jl+peaR0GarbMDYgepxqzAuhrhyL1 pHCdhC8soTdGPShN00Cnd34sQD1MW23VJuBlfPZtuUmo5+DB3wAZ2xKKs75n7Ka5fY+8 7M0wYoooWmFhWG0HsV9Beg7OuAxZ1k7E4kQhCMIbPn0AiyL5yz0/+ZSFb5PsbLjF+oyT Z7pSSu37cXVAfDbm0XVhKxuoyNCVepO9lIjzEos6elrjr7z3JVyMjsylpwrPKaVjaoGD ZZzQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q8si1012422pgs.203.2018.03.13.18.17.53; Tue, 13 Mar 2018 18:18:09 -0700 (PDT) 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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932976AbeCNBQz (ORCPT + 99 others); Tue, 13 Mar 2018 21:16:55 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:41082 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932590AbeCNBQy (ORCPT ); Tue, 13 Mar 2018 21:16:54 -0400 Received: by mail-oi0-f66.google.com with SMTP id g5so1365259oiy.8 for ; Tue, 13 Mar 2018 18:16:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:from:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=gi8YNkS66CDqPFDEj5VXMvsuPpjrTxIIolROxVIkjqs=; b=Diqt4r1R9HJOewG/miBGJ5nq183ady+GXK/K0MSVBFLFhpclxN2yQZL2fa4mf083Cl zv4hBFxrFJtWqvc3yBOxODulw5NN0apdbEBxgXTmcXbpMoQmVJILBqT0OvwZB0O47/gg LYtJSkvX1zmWcB2PmXPqR33Rn3dLGKouW97msx7/jyanJhR9J++yIzX9x9+bX6BRMvsc BMLJntwRLBZIQj9XAD4Tf6p7DBnmY2Q6o35V63IaQmZcWujWAdiEP+3AOd/3FocF1tGF 7odxUaaMt/plemQGnj4C/Rtr/NbUzerlXV9rF2l/J3GHYq6R/ruRbeZESBe2PnRxmHxP dt8w== X-Gm-Message-State: AElRT7HntoVNJOkDRRCYso0mus0Vl712vzpNTQMATBiAHaoRPzleOkx/ /h9vYGdAlznKgdWaxFAIVoutYg== X-Received: by 10.202.244.205 with SMTP id s196mr1770795oih.327.1520990213779; Tue, 13 Mar 2018 18:16:53 -0700 (PDT) Received: from ?IPv6:2601:602:9802:a8dc::b761? ([2601:602:9802:a8dc::b761]) by smtp.gmail.com with ESMTPSA id w111sm929343ota.41.2018.03.13.18.16.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Mar 2018 18:16:52 -0700 (PDT) Subject: Re: [PATCH 4/4] gpio: Remove VLA from stmpe driver From: Laura Abbott To: Phil Reid , Linus Walleij , Kees Cook , Patrice Chotard Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-hardening@lists.openwall.com References: <20180310001021.6437-1-labbott@redhat.com> <20180310001021.6437-5-labbott@redhat.com> <9175611d-049d-ec28-0716-e45fccfd579f@electromag.com.au> <4e64bbae-e91b-f0c5-ff79-3dde8fbe2119@redhat.com> Message-ID: Date: Tue, 13 Mar 2018 18:16:51 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: <4e64bbae-e91b-f0c5-ff79-3dde8fbe2119@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/13/2018 05:18 PM, Laura Abbott wrote: > On 03/13/2018 02:13 AM, Phil Reid wrote: >> On 10/03/2018 08:10, Laura Abbott wrote: >>> The new challenge is to remove VLAs from the kernel >>> (see https://lkml.org/lkml/2018/3/7/621) >>> >>> This patch replaces a VLA with an appropriate call to kmalloc_array. >>> >>> Signed-off-by: Laura Abbott >>> --- >>>   drivers/gpio/gpio-stmpe.c | 7 ++++++- >>>   1 file changed, 6 insertions(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpio/gpio-stmpe.c b/drivers/gpio/gpio-stmpe.c >>> index f8d7d1cd8488..b7854850bcdb 100644 >>> --- a/drivers/gpio/gpio-stmpe.c >>> +++ b/drivers/gpio/gpio-stmpe.c >>> @@ -369,10 +369,14 @@ static irqreturn_t stmpe_gpio_irq(int irq, void *dev) >>>       struct stmpe *stmpe = stmpe_gpio->stmpe; >>>       u8 statmsbreg; >>>       int num_banks = DIV_ROUND_UP(stmpe->num_gpios, 8); >>> -    u8 status[num_banks]; >>> +    u8 *status; >>>       int ret; >>>       int i; >>> +    status = kmalloc_array(num_banks, sizeof(*status), GFP_ATOMIC); >>> +    if (!status) >>> +        return IRQ_NONE; >>> + >>>       /* >>>        * the stmpe_block_read() call below, imposes to set statmsbreg >>>        * with the register located at the lowest address. As STMPE1600 >>> @@ -424,6 +428,7 @@ static irqreturn_t stmpe_gpio_irq(int irq, void *dev) >>>           } >>>       } >>> +    kfree(status); >>>       return IRQ_HANDLED; >>>   } >>> >> >> Doing this in an irq handler seems wrong. >> Perhaps better if a buffer is pre-allocated in stmpe_gpio >> >> > > Sure, I can pre-allocate the buffer in the probe. > > Thanks, > Laura Actually I wonder if there would be concurrency problems if we tried to pre-allocate a global buffer. But the IRQ handler calls stmpe_block_read which takes a mutex to sleep so I think doing the (small) kmalloc should be fine and I can change it to a GFP_KERNEL. Thanks, Laura