If SetTime() is meant to set daylight saving time it will be called with
Time.Daylight == EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT.

Return 0 from GetTime() if time is not in daylight because we cannot
determine if we are in a time zone with daylight saving time.

Signed-off-by: Heinrich Schuchardt <[email protected]>
---
v2
        new patch
---
 lib/efi_loader/efi_runtime.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/efi_loader/efi_runtime.c b/lib/efi_loader/efi_runtime.c
index 2082d1304f..98ab4de03d 100644
--- a/lib/efi_loader/efi_runtime.c
+++ b/lib/efi_loader/efi_runtime.c
@@ -195,9 +195,9 @@ static efi_status_t EFIAPI efi_get_time_boottime(
        time->hour = tm.tm_hour;
        time->minute = tm.tm_min;
        time->second = tm.tm_sec;
-       time->daylight = EFI_TIME_ADJUST_DAYLIGHT;
-       if (tm.tm_isdst > 0)
-               time->daylight |= EFI_TIME_IN_DAYLIGHT;
+       if (tm.tm_isdst)
+               time->daylight =
+                       EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT;
        time->timezone = EFI_UNSPECIFIED_TIMEZONE;

        if (capabilities) {
@@ -276,7 +276,8 @@ static efi_status_t EFIAPI efi_set_time_boottime(struct 
efi_time *time)
        tm.tm_hour = time->hour;
        tm.tm_min = time->minute;
        tm.tm_sec = time->second;
-       tm.tm_isdst = time->daylight == EFI_TIME_IN_DAYLIGHT;
+       tm.tm_isdst = time->daylight ==
+                     (EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT);
        /* Calculate day of week */
        rtc_calc_weekday(&tm);

--
2.20.1

_______________________________________________
U-Boot mailing list
[email protected]
https://lists.denx.de/listinfo/u-boot

Reply via email to