Message ID | 20181012061136.11421-1-ricardo.ribalda@gmail.com |
---|---|
State | New |
Headers | show |
Series | gpiolib: Initialize gdev field before is used | expand |
On Fri, Oct 12, 2018 at 8:11 AM Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> wrote: > gpio_hog depends on gdev field being initialized. This patch fixes an > OOPs during initialization of TI's AM335x-ICEv2. > > Fixes: 3edfb7bd76bd1cba ("gpiolib: Show correct direction from the beginning") > Tested-by: Vignesh R <vigneshr@ti.com> > Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Patch applied. Thanks to both of you for sorting this out! Yours, Linus Walleij
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index e016b22658ff..bcd0ef49ce97 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -1349,6 +1349,9 @@ int gpiochip_add_data_with_key(struct gpio_chip *chip, void *data, spin_unlock_irqrestore(&gpio_lock, flags); + for (i = 0; i < chip->ngpio; i++) + gdev->descs[i].gdev = gdev; + #ifdef CONFIG_PINCTRL INIT_LIST_HEAD(&gdev->pin_ranges); #endif @@ -1380,8 +1383,6 @@ int gpiochip_add_data_with_key(struct gpio_chip *chip, void *data, for (i = 0; i < chip->ngpio; i++) { struct gpio_desc *desc = &gdev->descs[i]; - desc->gdev = gdev; - if (chip->get_direction && gpiochip_line_is_valid(chip, i)) desc->flags = !chip->get_direction(chip, i) ? (1 << FLAG_IS_OUT) : 0;