| From 7b8f10da3bf1056546133c9f54f49ce389fd95ab Mon Sep 17 00:00:00 2001 |
| From: Yongbae Park <yongbae2@gmail.com> |
| Date: Tue, 3 Mar 2015 19:46:49 +0900 |
| Subject: clocksource: efm32: Fix a NULL pointer dereference |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Yongbae Park <yongbae2@gmail.com> |
| |
| commit 7b8f10da3bf1056546133c9f54f49ce389fd95ab upstream. |
| |
| 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. |
| |
| Acked-by: Uwe Kleine-Kรถnig <u.kleine-koenig@pengutronix.de> |
| Signed-off-by: Yongbae Park <yongbae2@gmail.com> |
| Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/clocksource/time-efm32.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/clocksource/time-efm32.c |
| +++ b/drivers/clocksource/time-efm32.c |
| @@ -225,12 +225,12 @@ static int __init efm32_clockevent_init( |
| clock_event_ddata.base = base; |
| 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, |
| DIV_ROUND_CLOSEST(rate, 1024), |
| 0xf, 0xffff); |
| |
| + setup_irq(irq, &efm32_clock_event_irq); |
| + |
| return 0; |
| |
| err_get_irq: |