• David Brownell's avatar
    rtc: rtc_read_alarm() handles wraparound · a01cc657
    David Brownell authored
    While 0e36a9a4 ("rtc: fix readback from
    /sys/class/rtc/rtc?/wakealarm") made sure that active alarms were never
    returned with invalid "wildcard" fields (negative), it can still report
    (wrongly) that the alarm triggers in the past.
    
    Example, if it's now 10am, an alarm firing at 5am will be triggered
    TOMORROW not today.  (Which may also be next month or next year...)
    
    This updates that alarm handling in three ways:
    
      * Handle alarm rollover in the common cases of RTCs that don't
        support matching on all date fields.
    
      * Skip the invalid-field logic when it's not needed.
    
      * Minor bugfix ... tm_isdst should be ignored, it's one of the
        fields Linux doesn't maintain.
    
    A warning is emitted for some of the unhandled rollover cases, but the
    possible combinations are a bit too numerous to handle every bit of
    potential hardware and firmware braindamage.
    Signed-off-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: Mark Lord <lkml@rtr.ca>
    Acked-by: default avatarAlessandro Zummo <a.zummo@towertech.it>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a01cc657
interface.c 11.6 KB