linux-imx/drivers/clocksource
Joonyoung Shim 0d34009898 clocksource/exynos_mct: Clear interrupt when cpu is shut down
commit bc7c36eedb upstream.

When a CPU goes offline a potentially pending timer interrupt is not
cleared. When the CPU comes online again then the pending interrupt is
delivered before the per cpu clockevent device is initialized. As a
consequence the tick interrupt handler dereferences a NULL pointer.

[   51.251378] Unable to handle kernel NULL pointer dereference at virtual address 00000040
[   51.289348] task: ee942d00 task.stack: ee960000
[   51.293861] PC is at tick_periodic+0x38/0xb0
[   51.298102] LR is at tick_handle_periodic+0x1c/0x90

Clear the pending interrupt in the cpu dying path.

Fixes: 56a94f1391 ("clocksource: exynos_mct: Avoid blocking calls in the cpu hotplug notifier")
Reported-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Cc: linux-samsung-soc@vger.kernel.org
Cc: cw00.choi@samsung.com
Cc: daniel.lezcano@linaro.org
Cc: javier@osg.samsung.com
Cc: kgene@kernel.org
Cc: krzk@kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Link: http://lkml.kernel.org/r/1484628876-22065-1-git-send-email-jy0922.shim@samsung.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2017-01-27 11:15:54 +01:00
..
acpi_pm.c treewide: Fix printks with 0x%# 2013-08-27 10:49:38 +02:00
arm_arch_timer.c Merge branch 'timers/clockevents-next' of git://git.linaro.org/people/dlezcano/clockevents into timers/core 2013-08-21 14:59:23 +02:00
arm_global_timer.c clocksource+irqchip: delete __cpuinit usage from all related files 2013-07-14 19:36:57 -04:00
bcm_kona_timer.c ARM: DT: binding fixup to align with vendor-prefixes.txt (drivers) 2013-08-20 10:51:38 -07:00
bcm2835_timer.c sched_clock: Make ARM's sched_clock generic for all architectures 2013-06-12 14:02:13 -07:00
cadence_ttc_timer.c clocksource: cadence_ttc: Reuse clocksource as sched_clock 2013-07-18 15:27:34 +02:00
clksrc-dbx500-prcmu.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-07-06 14:09:38 -07:00
clksrc-of.c clocksource: of: Respect device tree node status 2013-09-26 02:30:16 +02:00
cs5535-clockevt.c clocksource: use clockevents_config_and_register() where possible 2013-01-14 10:12:42 -08:00
cyclone.c clocksource: cyclone: Add missing iounmap 2012-01-26 19:30:40 -08:00
dummy_timer.c clocksource+irqchip: delete __cpuinit usage from all related files 2013-07-14 19:36:57 -04:00
dw_apb_timer_of.c clocksource: dw_apb_timer_of: Fix support for dts binding "snps,dw-apb-timer" 2014-01-09 12:25:15 -08:00
dw_apb_timer.c Revert "dw_apb_timer_of.c: Remove parts that were picoxcell-specific" 2013-06-18 16:02:04 -07:00
em_sti.c clocksource: em_sti: Set cpu_possible_mask to fix SMP broadcast 2013-09-26 02:31:04 +02:00
exynos_mct.c clocksource/exynos_mct: Clear interrupt when cpu is shut down 2017-01-27 11:15:54 +01:00
i8253.c time: Kill xtime_lock, replacing it with jiffies_lock 2012-11-13 14:08:23 -05:00
Kconfig arm: clocksource: mvebu: Use the main timer as clock source from DT 2013-09-26 02:30:15 +02:00
Makefile ARM: clocksource: Add support for MOXA ART SoCs 2013-07-18 15:27:47 +02:00
metag_generic.c clocksource+irqchip: delete __cpuinit usage from all related files 2013-07-14 19:36:57 -04:00
mmio.c clocksource: add common mmio clocksource 2011-05-23 18:04:51 +01:00
moxart_timer.c ARM: clocksource: moxart: Add bitops.h include 2013-08-01 01:13:34 +02:00
mxs_timer.c sched_clock: Make ARM's sched_clock generic for all architectures 2013-06-12 14:02:13 -07:00
nomadik-mtu.c ARM: nomadik: add dynamic irq flag to the timer 2013-08-22 00:18:50 +02:00
samsung_pwm_timer.c The common clk framework changes for 3.12 are dominated by clock driver 2013-09-09 15:49:04 -07:00
scx200_hrt.c clocksource: scx200_hrt: Fix the build 2012-02-22 13:25:16 +01:00
sh_cmt.c clocksource: sh_cmt: 32-bit control register support 2013-08-22 00:18:45 +02:00
sh_mtu2.c clocksource: sh_mtu2: Set initcall level to subsys 2013-03-13 02:24:37 +09:00
sh_tmu.c clocksource: sh_tmu: Set initcall level to subsys 2013-03-13 02:24:36 +09:00
sun4i_timer.c clocksource/drivers/sun4i: Clear interrupts after stopping timer in probe function 2016-09-29 11:14:21 +02:00
tcb_clksrc.c clocksource: use clockevents_config_and_register() where possible 2013-01-14 10:12:42 -08:00
tegra20_timer.c sched_clock: Make ARM's sched_clock generic for all architectures 2013-06-12 14:02:13 -07:00
time-armada-370-xp.c Merge branch 'timers/core' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-09-16 16:10:26 -04:00
time-orion.c clocksource: orion: Use linux/sched_clock.h 2013-07-17 20:28:00 -07:00
timer-marco.c Now that we have a generic arch hook for broadcast we can remove the local 2013-07-23 16:54:15 -07:00
timer-prima2.c sched_clock: Make ARM's sched_clock generic for all architectures 2013-06-12 14:02:13 -07:00
vf_pit_timer.c clocksource: vf_pit_timer: use complement for sched_clock reading 2014-03-31 14:22:24 +02:00
vt8500_timer.c clocksource/drivers/vt8500: Increase the minimum delta 2016-03-03 12:45:55 +01:00
zevio-timer.c clocksource: Add TI-Nspire timer support 2013-06-06 17:23:13 +02:00