aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>2016-07-18 17:10:17 +0200
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2016-08-29 11:04:58 +0200
commit67f03de5f0ad6b4b0481bb43e4a819d1a441900b (patch)
tree085d38da1501517aea60964199638d4fa264983e
parents390/time: fixup the clock comparator on all cpus (diff)
downloadlinux-dev-67f03de5f0ad6b4b0481bb43e4a819d1a441900b.tar.xz
linux-dev-67f03de5f0ad6b4b0481bb43e4a819d1a441900b.zip
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.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c
index 5b1a199667e2..0bfcc492987e 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;
}
/*