Commit 3c6527a5 authored by Yongbae Park's avatar Yongbae Park Committed by Sasha Levin

clocksource: efm32: Fix a NULL pointer dereference

[ Upstream commit 7b8f10da ]

The initialisation of the efm32 clocksource first sets up the irq and only
after that initialises the data needed for irq handling. In case this
initialisation is delayed the irq handler would dereference a NULL pointer.

I'm not aware of anything that could delay the process in such a way, but it's
better to be safe than sorry, so setup the irq only when the clock event device
is ready.

Cc: stable@vger.kernel.org
Acked-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarYongbae Park <yongbae2@gmail.com>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
parent 5a0ed0a9
...@@ -225,12 +225,12 @@ static int __init efm32_clockevent_init(struct device_node *np) ...@@ -225,12 +225,12 @@ static int __init efm32_clockevent_init(struct device_node *np)
clock_event_ddata.base = base; clock_event_ddata.base = base;
clock_event_ddata.periodic_top = DIV_ROUND_CLOSEST(rate, 1024 * HZ); clock_event_ddata.periodic_top = DIV_ROUND_CLOSEST(rate, 1024 * HZ);
setup_irq(irq, &efm32_clock_event_irq);
clockevents_config_and_register(&clock_event_ddata.evtdev, clockevents_config_and_register(&clock_event_ddata.evtdev,
DIV_ROUND_CLOSEST(rate, 1024), DIV_ROUND_CLOSEST(rate, 1024),
0xf, 0xffff); 0xf, 0xffff);
setup_irq(irq, &efm32_clock_event_irq);
return 0; return 0;
err_get_irq: err_get_irq:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment