Messages in this thread | | | Date | Thu, 29 Aug 2013 11:52:44 +0200 | Subject | Re: [PATCH] gpiolib: Fix crash when exporting non-existant gpio | From | Linus Walleij <> |
| |
On Sat, Aug 24, 2013 at 10:48 PM, <danielfsantos@att.net> wrote:
> [ 222.961384] Unable to handle kernel NULL pointer dereference at > virtual address 00000044 > [ 222.969486] pgd = d97d0000 > [ 222.972190] [00000044] *pgd=1aaca831, *pte=00000000, *ppte=00000000 > [ 222.978483] Internal error: Oops: 17 [#1] PREEMPT ARM > --- > drivers/gpio/gpiolib.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > index d6413b2..db7c6bb 100644 > --- a/drivers/gpio/gpiolib.c > +++ b/drivers/gpio/gpiolib.c > @@ -123,7 +123,8 @@ static int gpio_chip_hwgpio(const struct gpio_desc *desc) > */ > static struct gpio_desc *gpio_to_desc(unsigned gpio) > { > - if (WARN(!gpio_is_valid(gpio), "invalid GPIO %d\n", gpio)) > + if (WARN(!gpio_is_valid(gpio) || !gpio_desc[gpio].chip, > + "invalid GPIO %d\n", gpio)) > return NULL; > else > return &gpio_desc[gpio]; > @@ -1406,8 +1407,7 @@ static int gpiod_request(struct gpio_desc *desc, const char *label) > spin_lock_irqsave(&gpio_lock, flags); > > chip = desc->chip; > - if (chip == NULL) > - goto done; > + BUG_ON(!chip);
It'd be good if Alexandre took a look at this.
BUG_ON() is pretty nasty, atleast replace it with a warning.
Yours, Linus Walleij
| |