diff options
author | Alessandro Zummo <a.zummo@towertech.it> | 2014-04-03 17:50:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-04-03 19:21:22 -0400 |
commit | 131c9cc832162bfe45be1065fa88d1ec2c165a3d (patch) | |
tree | 6a5ede933809e4d50c382af08178e8d6dbd41863 /drivers/rtc/interface.c | |
parent | c93a3ae2d213ff75a279fe6e28d8f41ca7f01483 (diff) |
rtc: verify a critical argument to rtc_update_irq() before using it
This small addition to the core simplifies code in the drivers and makes
them more robust when handling shared IRQs.
Signed-off-by: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/rtc/interface.c')
-rw-r--r-- | drivers/rtc/interface.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index 544be722937c..c2eff6082363 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c | |||
@@ -584,6 +584,9 @@ enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer) | |||
584 | void rtc_update_irq(struct rtc_device *rtc, | 584 | void rtc_update_irq(struct rtc_device *rtc, |
585 | unsigned long num, unsigned long events) | 585 | unsigned long num, unsigned long events) |
586 | { | 586 | { |
587 | if (unlikely(IS_ERR_OR_NULL(rtc))) | ||
588 | return; | ||
589 | |||
587 | pm_stay_awake(rtc->dev.parent); | 590 | pm_stay_awake(rtc->dev.parent); |
588 | schedule_work(&rtc->irqwork); | 591 | schedule_work(&rtc->irqwork); |
589 | } | 592 | } |