diff options
author | James Morris <james.l.morris@oracle.com> | 2014-07-17 02:10:27 +1000 |
---|---|---|
committer | James Morris <james.l.morris@oracle.com> | 2014-07-17 02:10:27 +1000 |
commit | bd89bb78f35fd175db7a9cfc504d789b6ca0f7b0 (patch) | |
tree | dee9f8b31f3d6d2fb141541da88e1cc1329b017e /drivers/rtc/interface.c | |
parent | f01387d2693813eb5271a3448e6a082322c7d75d (diff) | |
parent | 1795cd9b3a91d4b5473c97f491d63892442212ab (diff) |
Sync with the changes pushed by Serge in the last merge window.
Diffstat (limited to 'drivers/rtc/interface.c')
-rw-r--r-- | drivers/rtc/interface.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index c2eff6082363..5813fa52c3d4 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c @@ -292,7 +292,8 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) dev_dbg(&rtc->dev, "alarm rollover: %s\n", "year"); do { alarm->time.tm_year++; - } while (rtc_valid_tm(&alarm->time) != 0); + } while (!is_leap_year(alarm->time.tm_year + 1900) + && rtc_valid_tm(&alarm->time) != 0); break; default: @@ -300,7 +301,16 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) } done: - return 0; + err = rtc_valid_tm(&alarm->time); + + if (err) { + dev_warn(&rtc->dev, "invalid alarm value: %d-%d-%d %d:%d:%d\n", + alarm->time.tm_year + 1900, alarm->time.tm_mon + 1, + alarm->time.tm_mday, alarm->time.tm_hour, alarm->time.tm_min, + alarm->time.tm_sec); + } + + return err; } int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) |