From: Arnd Bergmann Date: Sun, 27 Sep 2015 20:45:10 +0000 (-0400) Subject: staging/lustre: use 64-bit time LNetCtl() X-Git-Tag: KARO-TX6UL-2015-11-03~34^2~1497 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=5e50efea6a4fe6c92dce3022878f91cf17bdceb8;p=karo-tx-linux.git staging/lustre: use 64-bit time LNetCtl() This ioctl function passes a 64-bit time argument but then performs a computation with a 32-bit get_seconds() value. In order to avoid overflow here, this changes the code to use 64-bit math and ktime_get_real_seconds(). Signed-off-by: Arnd Bergmann Signed-off-by: Oleg Drokin Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/lustre/lnet/lnet/api-ni.c b/drivers/staging/lustre/lnet/lnet/api-ni.c index 7fab03bee1ea..c368cf561b9d 100644 --- a/drivers/staging/lustre/lnet/lnet/api-ni.c +++ b/drivers/staging/lustre/lnet/lnet/api-ni.c @@ -1343,6 +1343,7 @@ LNetCtl(unsigned int cmd, void *arg) lnet_process_id_t id = {0}; lnet_ni_t *ni; int rc; + unsigned long secs_passed; LASSERT(the_lnet.ln_init); LASSERT(the_lnet.ln_refcount > 0); @@ -1370,10 +1371,9 @@ LNetCtl(unsigned int cmd, void *arg) &data->ioc_nid, &data->ioc_flags, &data->ioc_priority); case IOC_LIBCFS_NOTIFY_ROUTER: + secs_passed = (ktime_get_real_seconds() - data->ioc_u64[0]); return lnet_notify(NULL, data->ioc_nid, data->ioc_flags, - cfs_time_current() - - cfs_time_seconds(get_seconds() - - (time_t)data->ioc_u64[0])); + jiffies - secs_passed * HZ); case IOC_LIBCFS_PORTALS_COMPATIBILITY: /* This can be removed once lustre stops calling it */