firmware: raspberrypi: print time using time64_t
authorArnd Bergmann <arnd@arndb.de>
Mon, 27 Nov 2017 11:57:14 +0000 (12:57 +0100)
committerEric Anholt <eric@anholt.net>
Wed, 29 Nov 2017 00:24:33 +0000 (16:24 -0800)
The firmware timestamp is an unsigned 32-bit value, but we copy it into
a signed 32-bit variable, so we can theoretically get an overflow in
the calculation when the timestamp is between 2038 and 2106.

This changes the temporary variable to time64_t and changes the deprecated
time_to_tm() over to time64_to_tm() accordingly.

There is still an overflow in y2106, but that is a limitation of the
firmware interface, not a kernel problem.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
drivers/firmware/raspberrypi.c

index dd506cd..6692888 100644 (file)
@@ -174,7 +174,7 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
        if (ret == 0) {
                struct tm tm;
 
-               time_to_tm(packet, 0, &tm);
+               time64_to_tm(packet, 0, &tm);
 
                dev_info(fw->cl.dev,
                         "Attached to firmware from %04ld-%02d-%02d %02d:%02d\n",