Patch "powerpc: sysdev: cpm: fix gpio save_regs functions" has been added to the 4.7-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
powerpc: sysdev: cpm: fix gpio save_regs functions
to the 4.7-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
powerpc-sysdev-cpm-fix-gpio-save_regs-functions.patch
and it can be found in the queue-4.7 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
41017a7579cf49cb5513e17df1570dc918760079Mon Sep 17 00:00:00 2001
From: Christophe Leroy <[email protected]>
Date: Thu, 11 Aug 2016 10:50:40 +0200
Subject: powerpc: sysdev: cpm: fix gpio save_regs functions
From: Christophe Leroy <[email protected]>
commit 41017a7579cf49cb5513e17df1570dc918760079 upstream.
of_mm_gpiochip_add_data() calls mm_gc->save_regs() before setting the data. Therefore ->save_regs() cannot use gpiochip_get_data()
[ 0.275940] Unable to handle kernel paging request for data at address 0x00000130 [ 0.283120] Faulting instruction address: 0xc01b44cc [ 0.288175] Oops: Kernel access of bad area, sig: 11 [#1] [ 0.293343] PREEMPT CMPC885 [ 0.296141] CPU: 0 PID: 1 Comm: swapper Not tainted 4.7.0-g65124df-dirty #68 [ 0.304131] task: c6074000 ti: c6080000 task.ti: c6080000 [ 0.309459] NIP: c01b44cc LR: c0011720 CTR: c0011708 [ 0.314372] REGS: c6081d90 TRAP: 0300 Not tainted (4.7.0-g65124df-dirty) [ 0.322267] MSR: 00009032 <EE,ME,IR,DR,RI> CR: 24000028 XER: 20000000 [ 0.328813] DAR: 00000130 DSISR: c0000000
GPR00: c01b6d0c c6081e40 c6074000 c6017000 c9028000 c601d028 c6081dd8 00000000
GPR08: c601d028 00000000 ffffffff 00000001 24000044 00000000 c0002790 00000000
GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 c05643b0 00000083
GPR24: c04a1a6c c0560000 c04a8308 c04c6480 c0012498 c6017000 c7ffcc78 c6017000
[ 0.360806] NIP [c01b44cc] gpiochip_get_data+0x4/0xc [ 0.365684] LR [c0011720] cpm1_gpio16_save_regs+0x18/0x44 [ 0.370972] Call Trace: [ 0.373451] [c6081e50] [c01b6d0c] of_mm_gpiochip_add_data+0x70/0xdc [ 0.379624] [c6081e70] [c00124c0] cpm_init_par_io+0x28/0x118 [ 0.385238] [c6081e80] [c04a8ac0] do_one_initcall+0xb0/0x17c [ 0.390819] [c6081ef0] [c04a8cbc] kernel_init_freeable+0x130/0x1dc [ 0.396924] [c6081f30] [c00027a4] kernel_init+0x14/0x110 [ 0.402177] [c6081f40] [c000b424] ret_from_kernel_thread+0x5c/0x64 [ 0.408233] Instruction dump: [ 0.411168] 4182fafc 3f80c040 48234c6d 3bc0fff0 3b9c5ed0 4bfffaf4 81290020 712a0004 [ 0.418825] 4182fb34 48234c51 4bfffb2c 81230004 <80690130> 4e800020 7c0802a6 9421ffe0 [ 0.426763] ---[ end trace fe4113ee21d72ffa ]---
--- arch/powerpc/sysdev/cpm1.c | 6 ++++-- arch/powerpc/sysdev/cpm_common.c | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-)
arch/powerpc/sysdev/cpm1.c +4 -2
@@ -534,7 +534,8 @@ struct cpm1_gpio16_chip {static void cpm1_gpio16_save_regs (struct of_mm_gpio_chip *mm_gc) { -struct cpm1_gpio16_chip *cpm1_gc =gpiochip_get_data (&mm_gc->gc); +struct cpm1_gpio16_chip *cpm1_gc = + container_of(mm_gc, struct cpm1_gpio16_chip, mm_gc);struct cpm_ioport16 __iomem *iop = mm_gc->regs; cpm1_gc->cpdata =in_be16 (&iop->dat);
@@ -649,7 +650,8 @@ struct cpm1_gpio32_chip {static void cpm1_gpio32_save_regs (struct of_mm_gpio_chip *mm_gc) { -struct cpm1_gpio32_chip *cpm1_gc =gpiochip_get_data (&mm_gc->gc); +struct cpm1_gpio32_chip *cpm1_gc = + container_of(mm_gc, struct cpm1_gpio32_chip, mm_gc);struct cpm_ioport32b __iomem *iop = mm_gc->regs; cpm1_gc->cpdata =in_be32 (&iop->dat);
arch/powerpc/sysdev/cpm_common.c +2 -1
@@ -82,7 +82,8 @@ struct cpm2_gpio32_chip {static void cpm2_gpio32_save_regs (struct of_mm_gpio_chip *mm_gc) { -struct cpm2_gpio32_chip *cpm2_gc =gpiochip_get_data (&mm_gc->gc); +struct cpm2_gpio32_chip *cpm2_gc = + container_of(mm_gc, struct cpm2_gpio32_chip, mm_gc);struct cpm2_ioports __iomem *iop = mm_gc->regs; cpm2_gc->cpdata =in_be32 (&iop->dat);
Patches currently in stable-queue which might be from [email protected] are
queue-4.7/powerpc-sysdev-cpm-fix-gpio-save_regs-functions.patch