From: Arnd Bergmann Date: Sun, 27 Sep 2015 20:45:15 +0000 (-0400) Subject: staging/lustre: use 64-bit computation in s2dhms() X-Git-Tag: KARO-TX6UL-2015-11-03~34^2~1492 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=23d9a0467c6ce436e4f40e44e81005df6bdd9d2d;p=karo-tx-linux.git staging/lustre: use 64-bit computation in s2dhms() The s2dhms computes the day/hour/minute/second values from a time_t, which stops working in 2038. This changes the code to take a time64_t argument, and use div_u64_rem() to implement the first division. Signed-off-by: Arnd Bergmann Signed-off-by: Oleg Drokin Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/lustre/lustre/include/lprocfs_status.h b/drivers/staging/lustre/lustre/include/lprocfs_status.h index 213666b03f7c..1b87a6ac9560 100644 --- a/drivers/staging/lustre/lustre/include/lprocfs_status.h +++ b/drivers/staging/lustre/lustre/include/lprocfs_status.h @@ -359,10 +359,12 @@ struct obd_histogram; struct dhms { int d, h, m, s; }; -static inline void s2dhms(struct dhms *ts, time_t secs) + +static inline void s2dhms(struct dhms *ts, time64_t secs64) { - ts->d = secs / 86400; - secs = secs % 86400; + unsigned int secs; + + ts->d = div_u64_rem(secs64, 86400, &secs); ts->h = secs / 3600; secs = secs % 3600; ts->m = secs / 60;