linux/drivers/clocksource
Joonyoung Shim bc7c36eedb clocksource/exynos_mct: Clear interrupt when cpu is shut down
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: stable@vger.kernel.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>
2017-01-17 10:08:38 +01:00
..
Kconfig clocksource: import ARC timer driver 2016-11-30 11:54:25 -08:00
Makefile clocksource: import ARC timer driver 2016-11-30 11:54:25 -08:00
acpi_pm.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
arc_timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
arm_arch_timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
arm_global_timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
armv7m_systick.c clocksource/drivers/armv7m_systick: Add the COMPILE_TEST option 2016-06-28 10:22:05 +02:00
asm9260_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
bcm2835_timer.c clocksource/drivers/bcm2835_timer: Unmap region obtained by of_iomap 2016-11-22 09:22:59 +01:00
bcm_kona_timer.c clocksource/drivers/kona: Fix get_counter() error handling 2016-08-17 13:08:31 +02:00
cadence_ttc_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
clksrc-dbx500-prcmu.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
clksrc-probe.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
clksrc_st_lpc.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
clps711x-timer.c ARM: SoC driver updates for v4.8 2016-08-01 18:36:01 -04:00
cs5535-clockevt.c clockevents/drivers/cs5535: Migrate to new 'set-state' interface 2015-08-06 12:16:42 +02:00
dummy_timer.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +01:00
dw_apb_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
dw_apb_timer_of.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
em_sti.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
exynos_mct.c clocksource/exynos_mct: Clear interrupt when cpu is shut down 2017-01-17 10:08:38 +01:00
fsl_ftm_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
h8300_timer8.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
h8300_timer16.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
h8300_tpu.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
i8253.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
jcore-pit.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
meson6_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
metag_generic.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
mips-gic-timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
mmio.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
moxart_timer.c clocksource/drivers/moxart: Plug memory and mapping leaks 2016-12-19 11:19:57 +01:00
mps2-timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
mtk_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
mxs_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
nomadik-mtu.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
numachip.c x86/numachip: Fix timer build conflict 2015-09-23 05:39:20 +02:00
pxa_timer.c ARM: sa11x0/pxa: acquire timer rate from the clock rate 2016-10-18 09:12:36 +02:00
qcom-timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
rockchip_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
samsung_pwm_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
scx200_hrt.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
sh_cmt.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
sh_mtu2.c clocksource/drivers/sh_mtu2: Fix multiple shutdown call issue 2015-10-28 15:22:56 +01:00
sh_tmu.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
sun4i_timer.c clocksource/drivers/sun4i: Clear interrupts after stopping timer in probe function 2016-08-26 15:56:01 +02:00
tango_xtal.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
tcb_clksrc.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
tegra20_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
time-armada-370-xp.c cpu/hotplug: Cleanup state names 2016-12-25 10:47:44 +01:00
time-efm32.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
time-lpc32xx.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
time-orion.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
time-pistachio.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-atlas7.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
timer-atmel-pit.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-atmel-st.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-digicolor.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-imx-gpt.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-integrator-ap.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-keystone.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-nps.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-oxnas-rps.c clocksource/drivers/oxnas: Add OX820 compatible 2016-09-12 07:28:46 +02:00
timer-prima2.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-sp.h ARM: 8366/1: move Dual-Timer SP804 driver to drivers/clocksource 2015-06-02 09:58:18 +01:00
timer-sp804.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-stm32.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
timer-sun5i.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-ti-32k.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
timer-u300.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
versatile.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
vf_pit_timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00
vt8500_timer.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
zevio-timer.c clocksources: Switch back to the clksrc table 2016-06-28 10:19:35 +02:00