From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751740AbdGaAyN (ORCPT ); Sun, 30 Jul 2017 20:54:13 -0400 Received: from mail.kernel.org ([198.145.29.99]:52150 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751646AbdGaAyL (ORCPT ); Sun, 30 Jul 2017 20:54:11 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E85F422BCD Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=mhiramat@kernel.org Date: Mon, 31 Jul 2017 09:54:07 +0900 From: Masami Hiramatsu To: Andy Shevchenko Cc: Linus Walleij , "linux-gpio@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Masahiro Yamada , Masami Hiramatsu , Jassi Brar Subject: Re: [PATCH] [BUGFIX] gpio: reject invalid gpio before getting gpio_desc Message-Id: <20170731095407.3179cd776a16901f7317f71a@kernel.org> In-Reply-To: References: <150131523385.6834.16274817727659878191.stgit@devbox> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 30 Jul 2017 19:21:36 +0300 Andy Shevchenko wrote: > On Sat, Jul 29, 2017 at 11:00 AM, Masami Hiramatsu wrote: > > Check user-given gpio number and reject it before > > calling gpio_to_desc() because gpio_to_desc() is > > for kernel driver and it expects given gpio number > > is valid (means 0 to 511). > > > If given number is invalid, gpio_to_desc() calls > > WARN() and dump registers and stack for debug. > > This means user can easily kick WARN() just by > > writing invalid gpio number (e.g. 512) to > > /sys/class/gpio/export. > > > This bug has been introduced by commit 0e9a5edf5d01 > > ("gpio: fix deferred probe detection for legacy API") > > Why so narrow paraghraps? We don't do two column articles :-) OK, I'll remove this, since Fixes explain that. > > > Signed-off-by: Masami Hiramatsu > > Fixes: commit 0e9a5edf5d01 ("gpio: fix deferred probe detection for legacy API") > > If you use git tools directly, like > > % git commit -s --amend > > you will immediately notice that your SoB line is supposed to be the last one. I'll move SoB line to the bottom. > > Besides above, word "commit" is not needed in Fixes: tag IIRC. Ah, OK, I'll remove "commit" from Fixes. > > > > --- a/drivers/gpio/gpiolib-sysfs.c > > +++ b/drivers/gpio/gpiolib-sysfs.c > > @@ -2,6 +2,7 @@ > > #include > > #include > > #include > > +#include > > #include > > #include > > #include > > > @@ -443,14 +444,16 @@ static ssize_t export_store(struct class *class, > > > - struct gpio_desc *desc; > > + struct gpio_desc *desc = NULL; > > > - desc = gpio_to_desc(gpio); > > + if (gpio_is_valid(gpio)) > > + desc = gpio_to_desc(gpio); > > Twice repeatition is a candidate for a helper, like: > > static inline struct gpio_desc *gpio_to_valid_desc(int gpio) > { > return gpio_is_valid(gpio) ? gpio_to_desc(gpio) : NULL; > } OK, I'll add the helper. Thanks, -- Masami Hiramatsu