From d5e04b8745a058cbf9f031a43d9f9f988bb87ce6 Mon Sep 17 00:00:00 2001 From: John Stultz Date: Thu, 20 Jan 2011 15:26:13 -0800 Subject: [PATCH] --- yaml --- r: 232290 b: refs/heads/master c: d5553a556165535337ece8592f066407c62eec2e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/rtc/interface.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 38d34d577f60..c5d2bed55c91 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: aa0be0f4659f91f31e45adc422b1788cb36ffddc +refs/heads/master: d5553a556165535337ece8592f066407c62eec2e diff --git a/trunk/drivers/rtc/interface.c b/trunk/drivers/rtc/interface.c index f1ba2c696528..925006d33109 100644 --- a/trunk/drivers/rtc/interface.c +++ b/trunk/drivers/rtc/interface.c @@ -123,12 +123,18 @@ int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) err = mutex_lock_interruptible(&rtc->ops_lock); if (err) return err; - alarm->enabled = rtc->aie_timer.enabled; - if (alarm->enabled) + if (rtc->ops == NULL) + err = -ENODEV; + else if (!rtc->ops->read_alarm) + err = -EINVAL; + else { + memset(alarm, 0, sizeof(struct rtc_wkalrm)); + alarm->enabled = rtc->aie_timer.enabled; alarm->time = rtc_ktime_to_tm(rtc->aie_timer.node.expires); + } mutex_unlock(&rtc->ops_lock); - return 0; + return err; } EXPORT_SYMBOL_GPL(rtc_read_alarm);