Le 18/05/2026 à 18:34, Thomas Huth a écrit :
From: Thomas Huth <[email protected]>

rtc_realtime_clock_offset is initialized with:

   rtc_realtime_clock_offset = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) / 1000;

And QEMU_CLOCK_REALTIME might be based on gettimeofday() in certain
cases (see get_clock_realtime() in include/qemu/timer.h). So this
counter will exceed 32 bits in the year 2038, thus we should not
store this value in a normal integer variable. Change it to a time_t
to fix the problem.
And while we're at it, also adjust the nearby rtc_host_datetime_offset
variable to be on the safe side in the related code.

Signed-off-by: Thomas Huth <[email protected]>
---
  v2: Use time_t instead of int64_t

  system/rtc.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/system/rtc.c b/system/rtc.c
index f13dd392a76..018609a4f9a 100644
--- a/system/rtc.c
+++ b/system/rtc.c
@@ -41,8 +41,8 @@ static enum {
      RTC_BASE_DATETIME,
  } rtc_base_type = RTC_BASE_UTC;
  static time_t rtc_ref_start_datetime;
-static int rtc_realtime_clock_offset; /* used only with QEMU_CLOCK_REALTIME */
-static int rtc_host_datetime_offset = -1; /* valid & used only with
+static time_t rtc_realtime_clock_offset; /* used only with QEMU_CLOCK_REALTIME 
*/
+static time_t rtc_host_datetime_offset = -1; /* valid & used only with
                                               RTC_BASE_DATETIME */
  QEMUClockType rtc_clock;
  /***********************************************************/

Reviewed-by: Laurent Vivier <[email protected]>


Reply via email to