linux/arch/powerpc/sysdev
Christophe Leroy 41017a7579 powerpc: sysdev: cpm: fix gpio save_regs functions
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 ]---

fixes: e65078f1f3 ("powerpc: sysdev: cpm1: use gpiochip data pointer")
fixes: a14a2d484b ("powerpc: cpm_common: 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>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2016-08-22 11:09:33 +10:00
..
ge genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
xics powerpc/xics: Properly set Edge/Level type and enable resend 2016-08-09 14:50:18 +10:00
6xx-suspend.S
axonram.c libnvdimm for 4.8 2016-07-28 17:38:16 -07:00
cpm1.c powerpc: sysdev: cpm: fix gpio save_regs functions 2016-08-22 11:09:33 +10:00
cpm2.c
cpm2_pic.c powerpc/cpm2: Use irq_set_handler_locked() 2015-09-16 15:43:10 +02:00
cpm2_pic.h
cpm_common.c powerpc: sysdev: cpm: fix gpio save_regs functions 2016-08-22 11:09:33 +10:00
dart.h
dart_iommu.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
dcr-low.S
dcr.c powerpc: Use bool function return values of true/false not 1/0 2015-03-31 14:19:47 +11:00
ehv_pic.c irqdomain: Use irq_domain_get_of_node() instead of direct field access 2015-10-13 19:01:23 +02:00
fsl_85xx_cache_ctlr.h
fsl_85xx_cache_sram.c
fsl_85xx_l2ctlr.c powerpc/85xx: Don't report SRAM to L2 cache fallback as error 2016-07-08 19:55:34 -05:00
fsl_gtm.c Merge remote-tracking branch 'grant/devicetree/next' into for-next 2013-11-07 10:34:46 -06:00
fsl_lbc.c powerpc/fsl-lbc: Modify suspend/resume entry sequence 2016-03-09 10:44:17 -06:00
fsl_mpic_err.c
fsl_mpic_timer_wakeup.c powerpc/fsl: add MPIC timer wakeup support 2013-07-01 18:38:42 -05:00
fsl_msi.c irqdomain: Use irq_domain_get_of_node() instead of direct field access 2015-10-13 19:01:23 +02:00
fsl_msi.h powerpc/85xx: workaround for chips with MSI hardware errata 2015-03-23 19:51:18 -05:00
fsl_pci.c powerpc/fsl-pci: Add a workaround for PCI 5 errata 2016-05-15 19:18:48 -05:00
fsl_pci.h EDAC, mpc85xx: Make mpc85xx-pci-edac a platform device 2015-12-11 16:56:16 +01:00
fsl_pmc.c powerpc: sysdev: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
fsl_rcpm.c powerpc/rcpm: Fix build break when SMP=n 2016-03-16 15:22:32 +11:00
fsl_rio.c powerpc: migrate exception table users off module.h and onto extable.h 2016-08-22 11:09:33 +10:00
fsl_rio.h rapidio: add global inbound port write interfaces 2016-03-22 15:36:02 -07:00
fsl_rmu.c rapidio: add global inbound port write interfaces 2016-03-22 15:36:02 -07:00
fsl_soc.c powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
fsl_soc.h powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
grackle.c
i8259.c powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
indirect_pci.c powerpc/fsl_pci: Fix pci stack build bug with FRAME_WARN 2015-01-29 19:56:15 -06:00
ipic.c irqdomain: Use irq_domain_get_of_node() instead of direct field access 2015-10-13 19:01:23 +02:00
ipic.h
Kconfig powerpc/rcpm: add RCPM driver 2016-03-04 23:50:27 -06:00
Makefile powerpc/rcpm: add RCPM driver 2016-03-04 23:50:27 -06:00
micropatch.c powerpc/8xx: Remove empty asm/mpc8xx.h 2014-06-25 18:49:40 -05:00
mmio_nvram.c
mpc5xxx_clocks.c powerpc/mpc5xxx: Use of_get_next_parent to simplify code 2015-10-15 20:32:01 +11:00
mpc8xx_pic.c powerpc/8xx: Shorten irq_chip name for the SIU 2015-10-06 21:54:42 +11:00
mpc8xx_pic.h
mpic.c powerpc/mpic: handle subsys_system_register() failure 2016-04-27 09:23:41 +10:00
mpic.h powerpc/pasemi: Only the build the pasemi MSI code for PASEMI=y 2015-05-11 19:55:25 +10:00
mpic_msgr.c powerpc: sysdev: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
mpic_msi.c irqdomain: Use irq_domain_get_of_node() instead of direct field access 2015-10-13 19:01:23 +02:00
mpic_timer.c powerpc/mpic_timer: fix convert ticks to time subtraction overflow 2014-01-09 17:52:14 -06:00
mpic_u3msi.c powerpc/MSI: Fix race condition in tearing down MSI interrupts 2015-09-10 17:27:08 +10:00
msi_bitmap.c treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
mv64x60.h
mv64x60_dev.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
mv64x60_pci.c POWERPC: drivers: remove __dev* attributes. 2013-01-03 15:57:04 -08:00
mv64x60_pic.c powerpc: Constify irq_domain_ops 2015-05-11 16:58:20 +10:00
mv64x60_udbg.c dt/bindings: Remove device_type "serial" from marvell,mv64360-mpsc 2014-01-16 16:31:31 +00:00
of_rtc.c powerpc: add explicit OF includes 2013-10-09 20:04:11 -05:00
pmi.c powerpc: sysdev: drop owner assignment from platform_drivers 2014-10-20 16:20:13 +02:00
ppc4xx_cpm.c powerpc/4xx/cpm: delete unneeded test before of_node_put 2014-11-10 09:59:34 +11:00
ppc4xx_gpio.c powerpc: ppc4xx: drop unused variable 2016-03-31 09:14:22 +02:00
ppc4xx_hsta_msi.c powerpc updates for 4.3 2015-09-03 16:41:38 -07:00
ppc4xx_msi.c powerpc/MSI: Fix race condition in tearing down MSI interrupts 2015-09-10 17:27:08 +10:00
ppc4xx_ocm.c powerpc/44x: Fix ocm_block allocation 2013-12-10 11:25:04 +11:00
ppc4xx_pci.c powerpc: Remove superfluous bootmem includes 2014-11-10 09:59:26 +11:00
ppc4xx_pci.h
ppc4xx_soc.c powerpc: add explicit OF includes 2013-10-09 20:04:11 -05:00
rtc_cmos_setup.c PTR_RET is now PTR_ERR_OR_ZERO(): Replace most. 2013-07-15 11:25:01 +09:30
scom.c powerpc/scom: Improve debugfs interface 2013-11-06 14:13:50 +11:00
simple_gpio.c powerpc: simple-gpio: use gpiochip data pointer 2016-03-30 10:53:23 +02:00
simple_gpio.h
tsi108_dev.c
tsi108_pci.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
udbg_memcons.c powerpc: Delete non-required instances of include <linux/init.h> 2014-01-15 13:46:44 +11:00
uic.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
xilinx_intc.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
xilinx_pci.c powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00