linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Crashing 'kzm' target in next-20160913 due to 'gpio: mxc: shift gpio_mxc_init() to subsys_initcall level'
@ 2016-09-14  3:20 Guenter Roeck
  2016-09-14  7:19 ` Linus Walleij
  2016-09-15 13:35 ` Vladimir Zapolskiy
  0 siblings, 2 replies; 20+ messages in thread
From: Guenter Roeck @ 2016-09-14  3:20 UTC (permalink / raw)
  To: Vladimir Zapolskiy
  Cc: linux-kernel, Greg Kroah-Hartman, Vladimir Zapolskiy, Shawn Guo,
	Linus Walleij

Hi Vladimir,

your commit e188cbf7564f ("gpio: mxc: shift gpio_mxc_init() to subsys_initcall level")
in -next causes the following crash when running the 'kzm' target (and most likely
the real thing) with qemu.

[    1.211426] Unable to handle kernel NULL pointer dereference at virtual address 0000000c
[    1.211600] pgd = c0004000
[    1.211680] [0000000c] *pgd=00000000
[    1.212067] Internal error: Oops: 5 [#1] SMP ARM
[    1.212245] Modules linked in:
[    1.212542] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.8.0-rc6-next-20160913 #1
[    1.212671] Hardware name: Kyoto Microcomputer Co., Ltd. KZM-ARM11-01
[    1.212825] task: c6848000 task.stack: c683e000
[    1.213231] PC is at platform_get_irq+0xc0/0xe8

See http://kerneltests.org/builders/qemu-arm-next/builds/525/steps/qemubuildcommand/logs/stdio
for a complete log.

Problem is quite subtle. The change causes the gpio driver to be installed later.
As a result, kzm_init_smsc9118() fails to initialize the gpio pins correctly.
gpio_request() in that function returns -EPROBE_DEFER, which is ignored,
gpio_to_irq() then returns -22 which is unconditionally assigned as interrupt number.
platform_get_irq(), as called from the smsc driver, gets this negative interrupt
number, and passes it unconditionally to irq_get_irq_data(), which returns NULL.
The NULL pointer is then passed to irqd_set_trigger_type() which, not entirely
surprisingly, crashes.

So, in other words, lots of bugs here. Nevertheless, I would suggest to keep using
postcore_initcall(), at least until it is sure that all gpio clients handle -EPROBE_DEFER
correctly.

Thanks,
Guenter

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2016-09-20 21:35 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-14  3:20 Crashing 'kzm' target in next-20160913 due to 'gpio: mxc: shift gpio_mxc_init() to subsys_initcall level' Guenter Roeck
2016-09-14  7:19 ` Linus Walleij
2016-09-14 14:33   ` Guenter Roeck
2016-09-15 12:19     ` Linus Walleij
2016-09-15 13:18       ` Vladimir Zapolskiy
2016-09-15 13:45         ` Vladimir Zapolskiy
2016-09-15 13:55         ` Linus Walleij
2016-09-15 13:18   ` Vladimir Zapolskiy
2016-09-15 13:35 ` Vladimir Zapolskiy
2016-09-15 14:23   ` Uwe Kleine-König
2016-09-15 14:35     ` Guenter Roeck
2016-09-15 14:46       ` Uwe Kleine-König
2016-09-16  2:24         ` Guenter Roeck
2016-09-18  0:08   ` Shawn Guo
2016-09-18  0:59     ` Guenter Roeck
2016-09-18 11:24       ` Linus Walleij
2016-09-20 12:55         ` Shawn Guo
2016-09-20 13:53           ` Vladimir Zapolskiy
2016-09-20 14:18             ` Shawn Guo
2016-09-20 21:35           ` Linus Walleij

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).