diff mbox series

[1/7] scsi: bfa: use ktime_get_real_ts64 for firmware timestamp

Message ID 20171110153715.1929456-2-arnd@arndb.de
State Accepted
Commit 7e75f6077074a7ce2c62092acbad0665ba88485d
Headers show
Series scsi: bfa: do_gettimeofday removal | expand

Commit Message

Arnd Bergmann Nov. 10, 2017, 3:37 p.m. UTC
BFA_TRC_TS() calculates a 32-bit microsecond timestamp using the
deprecated do_gettimeofday() function. This overflows roughly every
71 minutes, so it's obviously not used as an absolute time stamp,
but it seems wrong to use a time base for it that will jump
during settimeofday() calls, leap seconds, or the y2038 overflow.

This converts it to ktime_get_ts64(), which has none of those
problems but is not synchronized to wall-clock time.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 drivers/scsi/bfa/bfa_cs.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

-- 
2.9.0
diff mbox series

Patch

diff --git a/drivers/scsi/bfa/bfa_cs.h b/drivers/scsi/bfa/bfa_cs.h
index df6760ca0911..9685efc59b16 100644
--- a/drivers/scsi/bfa/bfa_cs.h
+++ b/drivers/scsi/bfa/bfa_cs.h
@@ -35,10 +35,10 @@ 
 
 #define BFA_TRC_TS(_trcm)                               \
 	({                                              \
-		struct timeval tv;                      \
+		struct timespec64 ts;                   \
 							\
-		do_gettimeofday(&tv);                   \
-		(tv.tv_sec*1000000+tv.tv_usec);         \
+		ktime_get_ts64(&ts);                    \
+		(ts.tv_sec*1000000+ts.tv_nsec / 1000);  \
 	})
 
 #ifndef BFA_TRC_TS