Skip to content

Commit

Permalink
clockevents: sun5i: Fix setup_irq init sequence
Browse files Browse the repository at this point in the history
The interrupt is enabled before the handler is set. Even this bug
did not appear, it is potentially dangerous as it can lead to a
NULL pointer dereference.

Fix the error by enabling the interrupt after
clockevents_config_and_register() is called.

Cc: stable@vger.kernel.org
Signed-off-by: Yongbae Park <yongbae2@gmail.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
  • Loading branch information
Yongbae Park authored and Daniel Lezcano committed Mar 5, 2015
1 parent 7b8f10d commit 1096be0
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/clocksource/timer-sun5i.c
Original file line number Diff line number Diff line change
Expand Up @@ -178,10 +178,6 @@ static void __init sun5i_timer_init(struct device_node *node)

ticks_per_jiffy = DIV_ROUND_UP(rate, HZ);

ret = setup_irq(irq, &sun5i_timer_irq);
if (ret)
pr_warn("failed to setup irq %d\n", irq);

/* Enable timer0 interrupt */
val = readl(timer_base + TIMER_IRQ_EN_REG);
writel(val | TIMER_IRQ_EN(0), timer_base + TIMER_IRQ_EN_REG);
Expand All @@ -191,6 +187,10 @@ static void __init sun5i_timer_init(struct device_node *node)

clockevents_config_and_register(&sun5i_clockevent, rate,
TIMER_SYNC_TICKS, 0xffffffff);

ret = setup_irq(irq, &sun5i_timer_irq);
if (ret)
pr_warn("failed to setup irq %d\n", irq);
}
CLOCKSOURCE_OF_DECLARE(sun5i_a13, "allwinner,sun5i-a13-hstimer",
sun5i_timer_init);
Expand Down

0 comments on commit 1096be0

Please sign in to comment.