AFS: Correctly use 64-bit time for UUID
Subsystems (2)
PATCH RESEND 1/1 AFS: Correctly use 64-bit time for UUID
UUID calculation uses 'struct timespec' whose seconds will overflow in year 2038 and beyond for 32-bit systems. This patch removes the dependency on 'struct timespec' by using ktime_get_real(). While the patch does not fix a 'bug' as such, it is part of a larger effort to remove instances of 'struct timespec' and other data-structures suffering from y2038 problem from the kernel.
fs/afs/main.c +2 -4
@@ -14,6 +14,7 @@#include <linux/init.h> #include <linux/completion.h> #include <linux/sched.h> +#include <linux/ktime.h> #include "internal.h" MODULE_DESCRIPTION ("AFS Client File System" );
@@ -37,7 +38,6 @@ struct workqueue_struct *afs_wq;*/ static int __init afs_get_client_UUID (void ) { -struct timespec ts;u64 uuidtime;u16 clockseq;int ret;
@@ -48,9 +48,7 @@ static int __init afs_get_client_UUID(void)if (ret <0 )return ret; -getnstimeofday (&ts); - uuidtime = (u64 ) ts.tv_sec *1000 *1000 *10 ; - uuidtime += ts.tv_nsec /100 ; + uuidtime =ktime_divns (ktime_get_real (),100 ); uuidtime +=AFS_UUID_TO_UNIX_TIME ; afs_uuid.time_low = uuidtime; afs_uuid.time_mid = uuidtime >>32 ;
Quoted 11 lines · On Friday 22 January 2016 15:32:01 Arnd Bergmann wrote:
UUID calculation uses 'struct timespec' whose seconds will overflow in year 2038 and beyond for 32-bit systems. This patch removes the dependency on 'struct timespec' by using
ktime_get_real(). While the patch does not fix a 'bug' as such, it is part of a larger effort to remove instances of 'struct timespec' and other data-structures suffering from y2038 problem from the kernel.Suggested-by Arnd Bergmann <[email protected]>Signed-off-by Tina Ruchandani <[email protected]>Signed-off-by Arnd Bergmann <[email protected]>
I was missing
From: Tina Ruchandani <[email protected]>
If anyone is going to pick this up, let me know whether you will fix it up yourself or if I should resend