misc: ibmasm: Replace timeval with timespec64
authorAmitoj Kaur Chawla <amitoj1606@gmail.com>
Wed, 10 Feb 2016 04:32:02 +0000 (10:02 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 12 Feb 2016 04:06:46 +0000 (20:06 -0800)
This patch replaces timeval with timespec64 as 32 bit 'struct timeval'
will not give current time beyond year 2038.

The patch changes the code to use ktime_get_real_ts64() which returns
a 'struct timespec64' instead of do_gettimeofday() which returns a
'struct timeval'

This patch also alters the format strings in sprintf() for now.tv_sec
and now.tv_nsec to incorporate 'long long' on 32 bit architectures and
leading zeroes respectively.

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/ibmasm/ibmasm.h

index 5bd127727d8ebc57d0d9a3b00bf81c9a38b79175..9fea49d2e15b738225634ef6289e6be7b59e3aee 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/kref.h>
 #include <linux/device.h>
 #include <linux/input.h>
+#include <linux/time64.h>
 
 /* Driver identification */
 #define DRIVER_NAME    "ibmasm"
@@ -53,9 +54,11 @@ extern int ibmasm_debug;
 
 static inline char *get_timestamp(char *buf)
 {
-       struct timeval now;
-       do_gettimeofday(&now);
-       sprintf(buf, "%lu.%lu", now.tv_sec, now.tv_usec);
+       struct timespec64 now;
+
+       ktime_get_real_ts64(&now);
+       sprintf(buf, "%llu.%.08lu", (long long)now.tv_sec,
+                               now.tv_nsec / NSEC_PER_USEC);
        return buf;
 }