rtc: verify a critical argument to rtc_update_irq() before using it
authorAlessandro Zummo <a.zummo@towertech.it>
Thu, 3 Apr 2014 21:50:09 +0000 (14:50 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 3 Apr 2014 23:21:22 +0000 (16:21 -0700)
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>
drivers/rtc/interface.c

index 544be722937cb5676c604ee1f586d289df09611c..c2eff6082363a8a4629b4d2a748c002a608b21e0 100644 (file)
@@ -584,6 +584,9 @@ enum hrtimer_restart rtc_pie_update_irq(struct hrtimer *timer)
 void rtc_update_irq(struct rtc_device *rtc,
                unsigned long num, unsigned long events)
 {
+       if (unlikely(IS_ERR_OR_NULL(rtc)))
+               return;
+
        pm_stay_awake(rtc->dev.parent);
        schedule_work(&rtc->irqwork);
 }