firewire: use 64-bit time_t based interfaces
authorArnd Bergmann <arnd@arndb.de>
Fri, 17 Aug 2018 22:43:44 +0000 (15:43 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 17 Aug 2018 23:20:27 +0000 (16:20 -0700)
32-bit CLOCK_REALTIME timestamps overflow in year 2038, so all such
interfaces are deprecated now.  For the FW_CDEV_IOC_GET_CYCLE_TIMER2
ioctl, we already support 64-bit timestamps, but the implementation
still uses timespec.

This changes the code to use timespec64 instead with the appropriate
accessor functions.

Link: http://lkml.kernel.org/r/20180711124456.1023039-1-arnd@arndb.de
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/firewire/core-cdev.c

index f0587273940e4eb211bc43385786b02456fdaa62..d8e185582642bcdc72e7989c4d47e7529a458353 100644 (file)
@@ -1205,7 +1205,7 @@ static int ioctl_get_cycle_timer2(struct client *client, union ioctl_arg *arg)
 {
        struct fw_cdev_get_cycle_timer2 *a = &arg->get_cycle_timer2;
        struct fw_card *card = client->device->card;
-       struct timespec ts = {0, 0};
+       struct timespec64 ts = {0, 0};
        u32 cycle_time;
        int ret = 0;
 
@@ -1214,9 +1214,9 @@ static int ioctl_get_cycle_timer2(struct client *client, union ioctl_arg *arg)
        cycle_time = card->driver->read_csr(card, CSR_CYCLE_TIME);
 
        switch (a->clk_id) {
-       case CLOCK_REALTIME:      getnstimeofday(&ts);  break;
-       case CLOCK_MONOTONIC:     ktime_get_ts(&ts);    break;
-       case CLOCK_MONOTONIC_RAW: getrawmonotonic(&ts); break;
+       case CLOCK_REALTIME:      ktime_get_real_ts64(&ts);     break;
+       case CLOCK_MONOTONIC:     ktime_get_ts64(&ts);          break;
+       case CLOCK_MONOTONIC_RAW: ktime_get_raw_ts64(&ts);      break;
        default:
                ret = -EINVAL;
        }