|
@@ -227,6 +227,13 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
|
|
|
missing = year;
|
|
|
}
|
|
|
|
|
|
+ /* Can't proceed if alarm is still invalid after replacing
|
|
|
+ * missing fields.
|
|
|
+ */
|
|
|
+ err = rtc_valid_tm(&alarm->time);
|
|
|
+ if (err)
|
|
|
+ goto done;
|
|
|
+
|
|
|
/* with luck, no rollover is needed */
|
|
|
t_now = rtc_tm_to_time64(&now);
|
|
|
t_alm = rtc_tm_to_time64(&alarm->time);
|
|
@@ -278,9 +285,9 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)
|
|
|
dev_warn(&rtc->dev, "alarm rollover not handled\n");
|
|
|
}
|
|
|
|
|
|
-done:
|
|
|
err = rtc_valid_tm(&alarm->time);
|
|
|
|
|
|
+done:
|
|
|
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,
|