Message ID | 1464973802-9286-1-git-send-email-ricardo.ribalda@gmail.com |
---|---|
State | New |
Headers | show |
On Fri, Jun 3, 2016 at 7:10 PM, Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> wrote: > Under some circumstances, a gpiochip might be half cleaned from the > gpio_device list. > > This patch makes sure that the chip pointer is still valid, before > calling the match function. > > [ 104.088296] BUG: unable to handle kernel NULL pointer dereference at > 0000000000000090 > [ 104.089772] IP: [<ffffffff813d2045>] of_gpiochip_find_and_xlate+0x15/0x80 > [ 104.128273] Call Trace: > [ 104.129802] [<ffffffff813d2030>] ? of_parse_own_gpio+0x1f0/0x1f0 > [ 104.131353] [<ffffffff813cd910>] gpiochip_find+0x60/0x90 > [ 104.132868] [<ffffffff813d21ba>] of_get_named_gpiod_flags+0x9a/0x120 > ... > [ 104.141586] [<ffffffff8163d12b>] gpio_led_probe+0x11b/0x360 > > Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> Oh there is the fix that Roger and Grygorii needs. Applied to fixes and tagged for stable. Sorry for screwing things up :( Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 06/08/2016 11:39 AM, Linus Walleij wrote: > On Fri, Jun 3, 2016 at 7:10 PM, Ricardo Ribalda Delgado > <ricardo.ribalda@gmail.com> wrote: > >> Under some circumstances, a gpiochip might be half cleaned from the >> gpio_device list. >> >> This patch makes sure that the chip pointer is still valid, before >> calling the match function. >> >> [ 104.088296] BUG: unable to handle kernel NULL pointer dereference at >> 0000000000000090 >> [ 104.089772] IP: [<ffffffff813d2045>] of_gpiochip_find_and_xlate+0x15/0x80 >> [ 104.128273] Call Trace: >> [ 104.129802] [<ffffffff813d2030>] ? of_parse_own_gpio+0x1f0/0x1f0 >> [ 104.131353] [<ffffffff813cd910>] gpiochip_find+0x60/0x90 >> [ 104.132868] [<ffffffff813d21ba>] of_get_named_gpiod_flags+0x9a/0x120 >> ... >> [ 104.141586] [<ffffffff8163d12b>] gpio_led_probe+0x11b/0x360 >> >> Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> > > Oh there is the fix that Roger and Grygorii needs. > > Applied to fixes and tagged for stable. > > Sorry for screwing things up :( > Np. :)
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index d407f904a31c..0626cc96744b 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -858,7 +858,7 @@ struct gpio_chip *gpiochip_find(void *data, spin_lock_irqsave(&gpio_lock, flags); list_for_each_entry(gdev, &gpio_devices, list) - if (match(gdev->chip, data)) + if (gdev->chip && match(gdev->chip, data)) break; /* No match? */
Under some circumstances, a gpiochip might be half cleaned from the gpio_device list. This patch makes sure that the chip pointer is still valid, before calling the match function. [ 104.088296] BUG: unable to handle kernel NULL pointer dereference at 0000000000000090 [ 104.089772] IP: [<ffffffff813d2045>] of_gpiochip_find_and_xlate+0x15/0x80 [ 104.128273] Call Trace: [ 104.129802] [<ffffffff813d2030>] ? of_parse_own_gpio+0x1f0/0x1f0 [ 104.131353] [<ffffffff813cd910>] gpiochip_find+0x60/0x90 [ 104.132868] [<ffffffff813d21ba>] of_get_named_gpiod_flags+0x9a/0x120 ... [ 104.141586] [<ffffffff8163d12b>] gpio_led_probe+0x11b/0x360 Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> --- We might want to cc: stable on these two patches drivers/gpio/gpiolib.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)