diff options
Diffstat (limited to 'arch/x86/vdso/vclock_gettime.c')
| -rw-r--r-- | arch/x86/vdso/vclock_gettime.c | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c index d9d35824c56..6a40b78b46a 100644 --- a/arch/x86/vdso/vclock_gettime.c +++ b/arch/x86/vdso/vclock_gettime.c @@ -104,11 +104,13 @@ notrace int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz)  {  	long ret;  	if (likely(gtod->sysctl_enabled && gtod->clock.vread)) { -		BUILD_BUG_ON(offsetof(struct timeval, tv_usec) != -			     offsetof(struct timespec, tv_nsec) || -			     sizeof(*tv) != sizeof(struct timespec)); -		do_realtime((struct timespec *)tv); -		tv->tv_usec /= 1000; +		if (likely(tv != NULL)) { +			BUILD_BUG_ON(offsetof(struct timeval, tv_usec) != +				     offsetof(struct timespec, tv_nsec) || +				     sizeof(*tv) != sizeof(struct timespec)); +			do_realtime((struct timespec *)tv); +			tv->tv_usec /= 1000; +		}  		if (unlikely(tz != NULL)) {  			/* Avoid memcpy. Some old compilers fail to inline it */  			tz->tz_minuteswest = gtod->sys_tz.tz_minuteswest;  |