Message ID | 20170524080156.1C4936EB78@pc13941vm.idsi0.si.c-s.fr |
---|---|
State | New |
Headers | show |
On Wed, May 24, 2017 at 10:01 AM, Christophe Leroy <christophe.leroy@c-s.fr> wrote: > of_mm_gpiochip_add_data() generates an Oops for NULL pointer dereference. > > of_mm_gpiochip_add_data() calls mm_gc->save_regs() before > setting the data, therefore ->save_regs() cannot use gpiochip_get_data() > > Fixes: 937daafca774b ("powerpc: simple-gpio: use gpiochip data pointer") > Cc: stable@vger.kernel.org > > Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Sorry for any screwups I've caused... 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 Wed, 2017-05-24 at 08:01:55 UTC, Christophe Leroy wrote: > of_mm_gpiochip_add_data() generates an Oops for NULL pointer dereference. > > of_mm_gpiochip_add_data() calls mm_gc->save_regs() before > setting the data, therefore ->save_regs() cannot use gpiochip_get_data() > > Fixes: 937daafca774b ("powerpc: simple-gpio: use gpiochip data pointer") > Cc: stable@vger.kernel.org > > Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> > Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Applied to powerpc fixes, thanks. https://git.kernel.org/powerpc/c/6f553912eedafae13ff20b322a65e4 cheers -- 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
diff --git a/arch/powerpc/sysdev/simple_gpio.c b/arch/powerpc/sysdev/simple_gpio.c index ef470b470b04..6afddae2fb47 100644 --- a/arch/powerpc/sysdev/simple_gpio.c +++ b/arch/powerpc/sysdev/simple_gpio.c @@ -75,7 +75,8 @@ static int u8_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) static void u8_gpio_save_regs(struct of_mm_gpio_chip *mm_gc) { - struct u8_gpio_chip *u8_gc = gpiochip_get_data(&mm_gc->gc); + struct u8_gpio_chip *u8_gc = + container_of(mm_gc, struct u8_gpio_chip, mm_gc); u8_gc->data = in_8(mm_gc->regs); }
of_mm_gpiochip_add_data() generates an Oops for NULL pointer dereference. of_mm_gpiochip_add_data() calls mm_gc->save_regs() before setting the data, therefore ->save_regs() cannot use gpiochip_get_data() Fixes: 937daafca774b ("powerpc: simple-gpio: use gpiochip data pointer") Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> --- arch/powerpc/sysdev/simple_gpio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)