Change the 32-bit time type timeval to the 64-bit time type ktime_t, since 32-bit systems using struct timeval will break in the year 2038. Correspondingly change do_gettimeofday() to ktime_get() since ktime_get returns a ktime_t, but do_gettimeofday returns a struct timeval.
Signed-off-by: Shraddha Barke shraddha.6596@gmail.com --- drivers/mtd/tests/speedtest.c | 10 +++++----- drivers/mtd/tests/torturetest.c | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/mtd/tests/speedtest.c b/drivers/mtd/tests/speedtest.c index 5a6f31a..0b89418 100644 --- a/drivers/mtd/tests/speedtest.c +++ b/drivers/mtd/tests/speedtest.c @@ -22,6 +22,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/init.h> +#include <linux/ktime.h> #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/err.h> @@ -49,7 +50,7 @@ static int pgsize; static int ebcnt; static int pgcnt; static int goodebcnt; -static struct timeval start, finish; +static ktime_t start, finish;
static int multiblock_erase(int ebnum, int blocks) { @@ -168,12 +169,12 @@ static int read_eraseblock_by_2pages(int ebnum)
static inline void start_timing(void) { - do_gettimeofday(&start); + start = ktime_get(); }
static inline void stop_timing(void) { - do_gettimeofday(&finish); + finish = ktime_get(); }
static long calc_speed(void) @@ -181,8 +182,7 @@ static long calc_speed(void) uint64_t k; long ms;
- ms = (finish.tv_sec - start.tv_sec) * 1000 + - (finish.tv_usec - start.tv_usec) / 1000; + ms = ktime_ms_delta(finish, start); if (ms == 0) return 0; k = (uint64_t)goodebcnt * (mtd->erasesize / 1024) * 1000; diff --git a/drivers/mtd/tests/torturetest.c b/drivers/mtd/tests/torturetest.c index e5d6e6d..93c2729 100644 --- a/drivers/mtd/tests/torturetest.c +++ b/drivers/mtd/tests/torturetest.c @@ -26,6 +26,7 @@ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/init.h> +#include <linux/ktime.h> #include <linux/module.h> #include <linux/moduleparam.h> #include <linux/err.h> @@ -79,18 +80,18 @@ static unsigned char *check_buf; static unsigned int erase_cycles;
static int pgsize; -static struct timeval start, finish; +static ktime_t start, finish;
static void report_corrupt(unsigned char *read, unsigned char *written);
static inline void start_timing(void) { - do_gettimeofday(&start); + start = ktime_get(); }
static inline void stop_timing(void) { - do_gettimeofday(&finish); + finish = ktime_get(); }
/* @@ -333,8 +334,7 @@ static int __init tort_init(void) long ms;
stop_timing(); - ms = (finish.tv_sec - start.tv_sec) * 1000 + - (finish.tv_usec - start.tv_usec) / 1000; + ms = ktime_ms_delta(finish, start); pr_info("%08u erase cycles done, took %lu " "milliseconds (%lu seconds)\n", erase_cycles, ms, ms / 1000);
On Thursday 22 October 2015 19:35:49 Shraddha Barke wrote:
Change the 32-bit time type timeval to the 64-bit time type ktime_t, since 32-bit systems using struct timeval will break in the year 2038. Correspondingly change do_gettimeofday() to ktime_get() since ktime_get returns a ktime_t, but do_gettimeofday returns a struct timeval.
Signed-off-by: Shraddha Barke shraddha.6596@gmail.com
The patch looks good to me, but please add a sentence to explain why you use ktime_get() instead of ktime_get_real(). It is the right choice here, but it may not be obvious to the reader that you now use monotonic times.
With that, please resend the patch and Cc the MTD maintainers.
How did you pick this driver? I thought I had originally given this task to someone else and not listed it in the y2038 wiki page. The other person has not worked on it over the last month, and it's a relatively simple patch, so don't worry about it.
Are we running out of simple tasks? I can always add a few more to the wiki as there are around 50 other drivers that need to be changed in a similar way.
Arnd
On Thu, 22 Oct 2015, Arnd Bergmann wrote:
On Thursday 22 October 2015 19:35:49 Shraddha Barke wrote:
Change the 32-bit time type timeval to the 64-bit time type ktime_t, since 32-bit systems using struct timeval will break in the year 2038. Correspondingly change do_gettimeofday() to ktime_get() since ktime_get returns a ktime_t, but do_gettimeofday returns a struct timeval.
Signed-off-by: Shraddha Barke shraddha.6596@gmail.com
The patch looks good to me, but please add a sentence to explain why you use ktime_get() instead of ktime_get_real(). It is the right choice here, but it may not be obvious to the reader that you now use monotonic times.
With that, please resend the patch and Cc the MTD maintainers.
How did you pick this driver? I thought I had originally given this task to someone else and not listed it in the y2038 wiki page. The other person has not worked on it over the last month, and it's a relatively simple patch, so don't worry about it.
No particular reason. Sorry about that , I'll stick to the tasks given on the tasks page.
Thanks,
Shraddha
Are we running out of simple tasks? I can always add a few more to the wiki as there are around 50 other drivers that need to be changed in a similar way.
Arnd