diff options
Diffstat (limited to 'drivers/rtc/interface.c')
| -rw-r--r-- | drivers/rtc/interface.c | 9 | 
1 files changed, 5 insertions, 4 deletions
| diff --git a/drivers/rtc/interface.c b/drivers/rtc/interface.c index 5faafb4aa55c..cca650b2e0b9 100644 --- a/drivers/rtc/interface.c +++ b/drivers/rtc/interface.c @@ -274,10 +274,9 @@ int __rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)  			return err;  		/* full-function RTCs won't have such missing fields */ -		if (rtc_valid_tm(&alarm->time) == 0) { -			rtc_add_offset(rtc, &alarm->time); -			return 0; -		} +		err = rtc_valid_tm(&alarm->time); +		if (!err) +			goto done;  		/* get the "after" timestamp, to detect wrapped fields */  		err = rtc_read_time(rtc, &now); @@ -379,6 +378,8 @@ done:  	if (err && alarm->enabled)  		dev_warn(&rtc->dev, "invalid alarm value: %ptR\n",  			 &alarm->time); +	else +		rtc_add_offset(rtc, &alarm->time);  	return err;  } |