Sean Wang
5f591543a9
pinctrl: mt7622: fix a kernel panic when pio don't work as EINT controller
The function, external interrupt controller, is made as an optional to
mt7622 pinctrl. But if we don't want pio behaves as an external interrupt
controller, it would lead to hw->eint not be created properly and then
will cause 'kernel NULL pointer' issue when gpiochip try to call .to_irq
or .set_config. To fix it, check hw->eint before accessing the member.
[ 1.339494] Unable to handle kernel NULL pointer dereference at virtual
address 00000010
[ 1.347857] Mem abort info:
[ 1.350742] ESR = 0x96000005
[ 1.353905] Exception class = DABT (current EL), IL = 32 bits
[ 1.360024] SET = 0, FnV = 0
[ 1.363185] EA = 0, S1PTW = 0
[ 1.366431] Data abort info:
[ 1.369405] ISV = 0, ISS = 0x00000005
[ 1.373363] CM = 0, WnR = 0
[ 1.376437] [0000000000000010] user address but active_mm is swapper
[ 1.383005] Internal error: Oops: 96000005 [#1] PREEMPT SMP
[ 1.388748] Modules linked in:
[ 1.391897] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.16.0-rc1+ #344
[ 1.398625] Hardware name: MediaTek MT7622 RFB1 board (DT)
[ 1.404279] pstate: 80000005 (Nzcv daif -PAN -UAO)
[ 1.409221] pc : mtk_eint_find_irq+0x8/0x24
[ 1.413532] lr : mtk_gpio_to_irq+0x20/0x28
[ 1.417749] sp : ffffff800801baf0
[ 1.421161] x29: ffffff800801baf0 x28: ffffff8008792f40
[ 1.426637] x27: ffffff800886b000 x26: ffffff8008615620
[ 1.432113] x25: ffffffc00e4dbdc8 x24: ffffff80087b8000
[ 1.437589] x23: ffffffc00325a000 x22: ffffffc00325a010
[ 1.443066] x21: ffffffc0033dec18 x20: 00000000ffffffea
[ 1.448542] x19: ffffffc00e4db800 x18: 0000000000000130
[ 1.454018] x17: 000000000000000e x16: 0000000000000007
[ 1.459494] x15: ffffff80085ee000 x14: 0000000000000001
[ 1.464970] x13: 0000000000000001 x12: 0000000000000010
[ 1.470446] x11: 0101010101010101 x10: 0000000000000880
[ 1.475922] x9 : ffffff800801b990 x8 : ffffffc0030688e0
[ 1.481399] x7 : ffffff80080c0660 x6 : ffffffc00e4dbbb0
[ 1.486875] x5 : 0000000000000000 x4 : 0000000000000000
[ 1.492351] x3 : ffffff80082a92f4 x2 : 00000000fffffffa
[ 1.497826] x1 : 0000000000000051 x0 : 0000000000000000
[ 1.503305] Process swapper/0 (pid: 1, stack limit = 0x0000000054e053bd)
[ 1.510210] Call trace:
[ 1.512727] mtk_eint_find_irq+0x8/0x24
[ 1.516677] mtk_gpio_to_irq+0x20/0x28
[ 1.520539] gpiod_to_irq+0x48/0x60
[ 1.524135] mmc_gpiod_request_cd_irq+0x3c/0xc4
[ 1.528804] mmc_start_host+0x6c/0x8c
[ 1.532575] mmc_add_host+0x58/0x7c
[ 1.536168] msdc_drv_probe+0x4fc/0x67c
[ 1.540121] platform_drv_probe+0x58/0xa4
[ 1.544251] driver_probe_device+0x204/0x44c
[ 1.548649] __driver_attach+0x84/0xf8
[ 1.552512] bus_for_each_dev+0x68/0xa0
[ 1.556461] driver_attach+0x20/0x28
[ 1.560142] bus_add_driver+0xec/0x240
[ 1.564002] driver_register+0x98/0xe4
[ 1.567863] __platform_driver_register+0x48/0x50
[ 1.572711] mt_msdc_driver_init+0x18/0x20
[ 1.576932] do_one_initcall+0x98/0x130
[ 1.580886] kernel_init_freeable+0x13c/0x1d4
[ 1.585375] kernel_init+0x10/0xf8
[ 1.588879] ret_from_fork+0x10/0x18
[ 1.592564] Code: a8c67bfd d65f03c0 a9bf7bfd 910003fd (f9400800)
[ 1.598849] ---[ end trace 4bbcb7bc30e98492 ]---
[ 1.603677] Kernel panic - not syncing: Attempted to kill init!
exitcode=0x0000000b
[ 1.603677]
cc: Kevin Hilman <khilman@baylibre.com>
Cc: stable@vger.kernel.org
Fixes: e6dabd38d8 ("pinctrl: mediatek: add EINT support to MT7622 SoC")
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
2018-06-18 07:55:57 +02:00 |
| .. |
|
actions
|
pinctrl: actions: Fix uninitialized error in owl_pin_config_set()
|
2018-06-18 07:55:56 +02:00 |
|
aspeed
|
pinctrl: aspeed: Rework strap register write logic for the AST2500
|
2017-08-31 13:39:38 +02:00 |
|
bcm
|
treewide: kzalloc() -> kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
berlin
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
freescale
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
intel
|
This is the bulk of pin control changes for v4.18.
|
2018-06-07 13:56:45 -07:00 |
|
mediatek
|
pinctrl: mt7622: fix a kernel panic when pio don't work as EINT controller
|
2018-06-18 07:55:57 +02:00 |
|
meson
|
This is the bulk of pin control changes for v4.18.
|
2018-06-07 13:56:45 -07:00 |
|
mvebu
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
nomadik
|
pinctrl: nomadik: Drop U8540/9540 support
|
2018-03-23 03:38:14 +01:00 |
|
pxa
|
pinctrl: pxa: pxa2xx: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE
|
2017-11-30 14:42:04 +01:00 |
|
qcom
|
pinctrl: msm: fix gpio-hog related boot issues
|
2018-05-24 10:03:51 +02:00 |
|
samsung
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
sh-pfc
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
sirf
|
treewide: kzalloc() -> kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
spear
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
sprd
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
stm32
|
pinctrl/stm32: Add irq_eoi for stm32gpio irqchip
|
2018-05-24 12:38:22 +01:00 |
|
sunxi
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
tegra
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
ti
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
uniphier
|
This is the bulk of pin control changes for v4.18.
|
2018-06-07 13:56:45 -07:00 |
|
vt8500
|
treewide: kzalloc() -> kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
zte
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
core.c
|
pinctrl: core: Add missing EXPORT on pinctrl_register_mappings
|
2018-03-02 11:05:35 +01:00 |
|
core.h
|
pinctrl/gpio: Unify namespace for cross-calls
|
2017-09-22 11:02:10 +02:00 |
|
devicetree.c
|
pinctrl: devicetree: Fix pctldev pointer overwrite
|
2018-06-18 07:55:56 +02:00 |
|
devicetree.h
|
pinctrl: core: Use delayed work for hogs
|
2017-01-03 09:26:16 +01:00 |
|
Kconfig
|
pinctrl: actions: Add Actions S900 pinctrl driver
|
2018-05-02 14:36:08 +02:00 |
|
Makefile
|
pinctrl: actions: Add Actions S900 pinctrl driver
|
2018-05-02 14:36:08 +02:00 |
|
pinconf-generic.c
|
pinctrl: Add skew-delay pin config and bindings
|
2017-11-08 13:49:45 +01:00 |
|
pinconf.c
|
pinctrl: check ops->pin_config_set in pinconf_set_config()
|
2017-08-14 15:01:59 +02:00 |
|
pinconf.h
|
pinctrl: move const qualifier before struct
|
2017-08-14 15:01:02 +02:00 |
|
pinctrl-amd.c
|
pinctrl/amd: poll InterruptEnable bits in enable_irq
|
2018-03-26 11:09:49 +02:00 |
|
pinctrl-amd.h
|
pinctrl/amd: save pin registers over suspend/resume
|
2017-09-12 15:58:45 +02:00 |
|
pinctrl-artpec6.c
|
pinctrl: artpec-6: Add smaller groups for uarts
|
2018-03-01 17:04:09 +01:00 |
|
pinctrl-as3722.c
|
pinctrl: as3722: Use devm_pinctrl_register() for pinctrl registration
|
2016-04-21 09:23:21 +02:00 |
|
pinctrl-at91-pio4.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-at91.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-at91.h
|
pinctrl: at91: use own header
|
2014-10-29 09:28:35 +01:00 |
|
pinctrl-axp209.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-coh901.c
|
gpio: Move irqdomain into struct gpio_irq_chip
|
2017-11-08 14:06:21 +01:00 |
|
pinctrl-coh901.h
|
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
|
2017-11-02 11:10:55 +01:00 |
|
pinctrl-da850-pupd.c
|
Merge branch 'ib-pinctrl-genprops' into devel
|
2017-01-26 15:27:54 +01:00 |
|
pinctrl-digicolor.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-falcon.c
|
pinctrl: update my email address
|
2016-12-30 09:17:02 +01:00 |
|
pinctrl-gemini.c
|
This is the bulk of pin control changes for the v4.16 kernel cycle:
|
2018-02-02 14:22:53 -08:00 |
|
pinctrl-ingenic.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-lantiq.c
|
treewide: kzalloc() -> kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-lantiq.h
|
pinctrl: update my email address
|
2016-12-30 09:17:02 +01:00 |
|
pinctrl-lpc18xx.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-max77620.c
|
pinctrl: max77620: Use common error handling code in max77620_pinconf_set()
|
2017-11-08 13:49:57 +01:00 |
|
pinctrl-mcp23s08.c
|
pinctrl: mcp23s08: add open drain configuration for irq output
|
2018-02-22 16:08:59 +01:00 |
|
pinctrl-ocelot.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-oxnas.c
|
gpio: Move irqdomain into struct gpio_irq_chip
|
2017-11-08 14:06:21 +01:00 |
|
pinctrl-palmas.c
|
pinctrl: palmas: Delete an error message for a failed memory allocation in palmas_pinctrl_probe()
|
2018-01-03 08:46:49 +01:00 |
|
pinctrl-pic32.c
|
gpio: Move irqdomain into struct gpio_irq_chip
|
2017-11-08 14:06:21 +01:00 |
|
pinctrl-pic32.h
|
pinctrl: pinctrl-pic32: Add PIC32 pin control driver
|
2016-02-05 23:54:47 +01:00 |
|
pinctrl-pistachio.c
|
gpio: Move irqdomain into struct gpio_irq_chip
|
2017-11-08 14:06:21 +01:00 |
|
pinctrl-rk805.c
|
pinctrl: Add pinctrl driver for the RK805 PMIC
|
2017-08-21 08:54:46 +01:00 |
|
pinctrl-rockchip.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-rza1.c
|
pinctrl: rza1: Add support for RZ/A1L
|
2017-10-09 09:16:21 +02:00 |
|
pinctrl-single.c
|
pinctrl: single: Add allocation failure checking of saved_vals
|
2018-06-18 07:55:56 +02:00 |
|
pinctrl-st.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-sx150x.c
|
pinctrl: sx150x: Add a static gpio/pinctrl pin range mapping
|
2018-01-18 11:04:47 +01:00 |
|
pinctrl-tb10x.c
|
pinctrl: tb10x: constify pinconf_ops, pinctrl_ops, and pinmux_ops structures
|
2017-08-22 14:41:40 +02:00 |
|
pinctrl-u300.c
|
pinctrl: u300: make u300_pmx_registers static
|
2016-06-13 09:27:43 +02:00 |
|
pinctrl-utils.c
|
pinctrl: utils: Delete an error message for a failed memory allocation in pinctrl_utils_add_map_configs()
|
2018-01-03 08:46:53 +01:00 |
|
pinctrl-utils.h
|
pinctrl: Rename pinctrl_utils_dt_free_map to pinctrl_utils_free_map
|
2016-04-01 15:06:36 +02:00 |
|
pinctrl-xway.c
|
treewide: devm_kzalloc() -> devm_kcalloc()
|
2018-06-12 16:19:22 -07:00 |
|
pinctrl-zynq.c
|
pinctrl: zynq: Fix warnings in the driver
|
2017-08-14 15:01:01 +02:00 |
|
pinmux.c
|
pinctrl: pinmux: Use seq_putc() in pinmux_pins_show()
|
2018-01-16 11:07:18 +01:00 |
|
pinmux.h
|
pinctrl: move const qualifier before struct
|
2017-08-14 15:01:02 +02:00 |