diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2016-07-18 15:10:17 (GMT) |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-08-29 09:04:58 (GMT) |
commit | 67f03de5f0ad6b4b0481bb43e4a819d1a441900b (patch) | |
tree | 085d38da1501517aea60964199638d4fa264983e | |
parent | 0c00b1e00bba9c9046bee4e487ed19360da9ded0 (diff) | |
download | linux-67f03de5f0ad6b4b0481bb43e4a819d1a441900b.tar.xz |
s390/time: avoid races when updating tb_update_count
The increment might not be atomic and we're not holding the
timekeeper_lock. Therefore we might lose an update to count, resulting in
VDSO being trapped in a loop. As other archs also simply update the
values and count doesn't seem to have an impact on reloading of these
values in VDSO code, let's just remove the update of tb_update_count.
Suggested-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | arch/s390/kernel/time.c | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index 5b1a199..0bfcc49 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c @@ -278,13 +278,8 @@ extern struct timezone sys_tz; void update_vsyscall_tz(void) { - /* Make userspace gettimeofday spin until we're done. */ - ++vdso_data->tb_update_count; - smp_wmb(); vdso_data->tz_minuteswest = sys_tz.tz_minuteswest; vdso_data->tz_dsttime = sys_tz.tz_dsttime; - smp_wmb(); - ++vdso_data->tb_update_count; } /* |