From patchwork Wed May 24 08:01:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christophe Leroy X-Patchwork-Id: 766371 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wXljm3gKLz9s8H for ; Wed, 24 May 2017 18:21:48 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936770AbdEXIV3 (ORCPT ); Wed, 24 May 2017 04:21:29 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:64293 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966983AbdEXIVB (ORCPT ); Wed, 24 May 2017 04:21:01 -0400 X-Greylist: delayed 1143 seconds by postgrey-1.27 at vger.kernel.org; Wed, 24 May 2017 04:21:00 EDT Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 3wXlGf07pFz9ttC6; Wed, 24 May 2017 10:01:46 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id 8HTAyzDyxs3V; Wed, 24 May 2017 10:01:45 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 3wXlGd6kKcz9ttBV; Wed, 24 May 2017 10:01:45 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 707448B7BE; Wed, 24 May 2017 10:01:56 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id y-QcQFE31Icl; Wed, 24 May 2017 10:01:56 +0200 (CEST) Received: from pc13941vm.idsi0.si.c-s.fr (po15451.idsi0.si.c-s.fr [172.25.231.23]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 4DC2E8B7B8; Wed, 24 May 2017 10:01:56 +0200 (CEST) Received: by pc13941vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 1C4936EB78; Wed, 24 May 2017 10:01:55 +0200 (CEST) From: Christophe Leroy Subject: [PATCH] powerpc: sysdev: simple_gpio: fix Oops in gpio save_regs function To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Scott Wood , Linus Walleij Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-gpio@vger.kernel.org, stable@vger.kernel.org Message-Id: <20170524080156.1C4936EB78@pc13941vm.idsi0.si.c-s.fr> Date: Wed, 24 May 2017 10:01:55 +0200 (CEST) Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org 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 Reviewed-by: Linus Walleij --- arch/powerpc/sysdev/simple_gpio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); }