• Ard Biesheuvel's avatar
    rtc: efi: use correct EFI 'epoch' · b2bd2370
    Ard Biesheuvel authored
    The rtc-efi driver declares that the EFI 'epoch' is 1/1/1998, but
    the UEFI spec does not define it at all. It does define a range of
    [1900, 9999] for the 'Year' member of the EFI_TIME struct, so let's
    use 1900 as the minimum year and not 1998.
    Also, move the validation of the year to the convert_from_efi_time()
    routine where all other EFI_TIME fields are validated as well.
    
    This prevents rtc_read_time() failures when the RTC that backs the
    EFI time services is set to a date before 1998, e.g., when it has
    lost power.
    
    This also optimizes the compute_wday() routine, by replacing the for
    loop with a simple arithmetic expression, and by reusing the yearday
    value that we need to compute anyway when populating the
    rtc_time::tm_yday field.
    
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
    Cc: rtc-linux@googlegroups.com
    Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
    b2bd2370
rtc-efi.c 4.98 KB