linux/drivers/clocksource
Matthias Brugger d4a19eb3b1 clocksource: mtk: Fix race conditions in probe code
We have two race conditions in the probe code which could lead to a null
pointer dereference in the interrupt handler.

The interrupt handler accesses the clockevent device, which may not yet be
registered.

First race condition happens when the interrupt handler gets registered before
the interrupts get disabled. The second race condition happens when the
interrupts get enabled, but the clockevent device is not yet registered.

Fix that by disabling the interrupts before we register the interrupt and enable
the interrupts after the clockevent device got registered.

Reported-by: Gongbae Park <yongbae2@gmail.com>
Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
2015-02-25 10:28:49 +01:00
..
acpi_pm.c treewide: Fix printks with 0x%# 2013-08-27 10:49:38 +02:00
arm_arch_timer.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-01-06 22:29:20 -05:00
arm_global_timer.c ARM: make it easier to check the CPU part number correctly 2014-07-18 12:29:02 +01:00
asm9260_timer.c ARM: clocksource: Add asm9260_timer driver 2015-01-29 14:02:06 +01:00
bcm2835_timer.c clocksource: bcm2835: Switch to sched_clock_register() 2013-07-30 11:24:51 -07:00
bcm_kona_timer.c clocksource: kona: fix __iomem annotation 2015-01-05 14:43:36 +01:00
cadence_ttc_timer.c clocksource: cadence_ttc: Add support for 32bit mode 2014-09-29 01:59:09 +02:00
clksrc-dbx500-prcmu.c clocksource: dbx500-prcmu: Switch to sched_clock_register() 2013-07-30 11:24:52 -07:00
clksrc-of.c of: consolidate linker section OF match table declarations 2014-05-20 14:25:24 -05:00
clps711x-timer.c clocksource: clps711x: Add CLPS711X clocksource driver 2014-07-23 12:02:35 +02:00
cs5535-clockevt.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
dummy_timer.c time: Replace __get_cpu_var uses 2014-08-26 13:45:44 -04:00
dw_apb_timer_of.c clocksource: dw_apb_timer_of: Do not trace read_sched_clock 2014-05-23 09:23:09 +02:00
dw_apb_timer.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
em_sti.c clocksource: em_sti: Remove unnecessary OOM messages 2014-05-23 09:23:10 +02:00
exynos_mct.c clocksource: exynos_mct: Fix bitmask regression for exynos4_mct_write 2015-01-05 14:43:35 +01:00
fsl_ftm_timer.c clocksource: Add Freescale FlexTimer Module (FTM) timer support 2014-05-23 10:12:04 +02:00
i8253.c time: Kill xtime_lock, replacing it with jiffies_lock 2012-11-13 14:08:23 -05:00
Kconfig clockevents: asm9260: Fix compilation error with sparc/sparc64 allyesconfig 2015-02-25 10:28:22 +01:00
Makefile ARM: SoC platform changes 2015-02-17 09:27:54 -08:00
meson6_timer.c ARM: meson6: clocksource: Add Meson6 timer support 2014-09-29 01:50:05 +02:00
metag_generic.c drivers/clocksource: Replace __get_cpu_var used for address calculation 2014-08-26 13:45:46 -04:00
mips-gic-timer.c clocksource: mips-gic: Add device-tree support 2014-11-24 07:45:30 +01:00
mmio.c clocksource: Fix clocksource_mmio_readX_down 2014-05-23 09:19:40 +02:00
moxart_timer.c ARM: clocksource: moxart: Add bitops.h include 2013-08-01 01:13:34 +02:00
mtk_timer.c clocksource: mtk: Fix race conditions in probe code 2015-02-25 10:28:49 +01:00
mxs_timer.c clocksource: mxs_timer: Switch to sched_clock_register() 2013-07-30 11:24:52 -07:00
nomadik-mtu.c ARM: SoC DT updates for 3.14 2014-01-23 18:45:38 -08:00
pxa_timer.c clocksource: pxa: Add device-tree support for PXA timer 2014-07-23 12:02:37 +02:00
qcom-timer.c clocksource: Replace __this_cpu_ptr with raw_cpu_ptr 2014-08-26 13:45:56 -04:00
rockchip_timer.c clockevents: rockchip: Add rockchip timer for rk3288 2015-01-29 14:02:13 +01:00
samsung_pwm_timer.c clocksource: misc drivers: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:27 +01:00
scx200_hrt.c clocksource: scx200_hrt: Fix the build 2012-02-22 13:25:16 +01:00
sh_cmt.c clocksource: sh_cmt: Add DT support 2014-07-04 15:46:17 +02:00
sh_mtu2.c clocksource: sh_mtu2: Add DT support 2014-07-04 15:50:29 +02:00
sh_tmu.c clocksource: sh_tmu: Set cpu_possible_mask to fix SMP broadcast 2015-01-05 14:43:37 +01:00
sun4i_timer.c clockevent: sun4i: Fix race condition in the probe code 2014-11-19 10:43:51 +01:00
tcb_clksrc.c clocksource: tcb_clksrc: Sanitize IRQ request 2014-09-29 01:50:05 +02:00
tegra20_timer.c clocksource: tegra: Use us counter as delay timer 2014-06-16 12:48:12 -06:00
time-armada-370-xp.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-12-10 08:18:32 -08:00
time-efm32.c clocksource: efm32: use $vendor,$device scheme for compatible string 2014-04-22 11:44:28 +02:00
time-orion.c clocksource: orion: Use atomic access for shared registers 2014-03-11 23:05:02 +01:00
timer-atlas7.c clocksource: marco: Rename marco to atlas7 2015-01-29 14:02:06 +01:00
timer-atmel-pit.c ARM: at91/clocksource: remove !DT PIT initializations 2014-12-03 14:15:52 +01:00
timer-digicolor.c clocksource: Driver for Conexant Digicolor SoC timer 2015-01-29 14:02:15 +01:00
timer-integrator-ap.c ARM: integrator: move AP timer to clocksource 2014-10-28 15:42:34 +01:00
timer-keystone.c clocksource: timer-keystone: Delete unnecessary variable 2014-03-11 23:05:00 +01:00
timer-prima2.c clocksource: sirf: Fix incorrect clock enable counter for timer 2014-07-23 12:02:34 +02:00
timer-sun5i.c clocksource: sun5i: Add support for reset controller 2014-04-22 13:56:50 +02:00
timer-u300.c Merge branch 'for-linus' of git://ftp.arm.linux.org.uk/~rmk/linux-arm 2014-04-05 13:20:43 -07:00
versatile.c clocksource: versatile: Adapt for Versatile AB and PB boards 2015-01-29 14:02:16 +01:00
vf_pit_timer.c clocksource: vf_pit_timer: Support shutdown mode 2014-09-29 01:50:05 +02:00
vt8500_timer.c clocksource: vt8500: Remove deprecated IRQF_DISABLED 2013-12-11 11:40:28 +01:00
zevio-timer.c clocksource: nspire: Fix compiler warning 2014-04-29 15:06:43 +02:00