linux-uconsole/arch/s390/kernel
Heiko Carstens 228f49c2da s390/time: fix sched_clock() overflow
commit ed4f20943c upstream.

Converting a 64 Bit TOD format value to nanoseconds means that the value
must be divided by 4.096. In order to achieve that we multiply with 125
and divide by 512.
When used within sched_clock() this triggers an overflow after appr.
417 days. Resulting in a sched_clock() return value that is much smaller
than previously and therefore may cause all sort of weird things in
subsystems that rely on a monotonic sched_clock() behaviour.

To fix this implement a tod_to_ns() helper function which converts TOD
values without overflow and call this function from both places that
open coded the conversion: sched_clock() and kvm_s390_handle_wait().

Reviewed-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-01-21 11:44:58 -08:00
..
vdso32 [S390] vdso: disable gcov profiling 2011-05-23 10:24:29 +02:00
vdso64 [S390] vdso: disable gcov profiling 2011-05-23 10:24:29 +02:00
asm-offsets.c [S390] pfault: cpu hotplug vs missing completion interrupts 2011-05-23 10:24:29 +02:00
audit.c
audit.h
base.S [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
bitmap.c [S390] move EXPORT_SYMBOLs to definitions 2009-03-26 15:24:11 +01:00
compat_audit.c
compat_exec_domain.c
compat_linux.c s390/compat: fix mmap compat system calls 2012-08-26 15:12:10 -07:00
compat_linux.h Mark arguments to certain syscalls as being const 2010-08-13 16:53:13 -07:00
compat_ptrace.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
compat_signal.c [S390] 64-bit register support for 31-bit processes 2009-10-06 10:35:10 +02:00
compat_wrapper.S ns: Wire up the setns system call 2011-05-28 10:48:39 -07:00
cpcmd.c [S390] convert cpcmd printks to pr_xxx macros. 2008-12-25 13:39:19 +01:00
crash.c
debug.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
diag.c [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c [S390] irq: merge irq.c and s390_ext.c 2011-05-26 09:48:24 +02:00
early.c [S390] early: limit savesys cmd string handling 2011-03-23 10:15:14 +01:00
ebcdic.c
entry.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
entry.S [S390] pfault: cpu hotplug vs missing completion interrupts 2011-05-23 10:24:29 +02:00
entry64.S [S390] pfault: cpu hotplug vs missing completion interrupts 2011-05-23 10:24:29 +02:00
ftrace.c [S390] cleanup ftrace backend functions 2011-01-05 12:47:31 +01:00
head.S [S390] compile fix for latest binutils 2011-04-04 09:43:33 +02:00
head31.S [S390] correct address of _stext with CONFIG_SHARED_KERNEL=y 2010-05-12 09:32:26 +02:00
head64.S [S390] correct address of _stext with CONFIG_SHARED_KERNEL=y 2010-05-12 09:32:26 +02:00
init_task.c Use new __init_task_data macro in arch init_task.c files. 2009-09-21 06:27:08 +02:00
ipl.c sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
irq.c [S390] irq: merge irq.c and s390_ext.c 2011-05-26 09:48:24 +02:00
jump_label.c jump label: Add s390 support 2011-04-04 13:43:16 -04:00
kprobes.c [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
machine_kexec.c [S390] kexec: Disable ftrace during kexec 2011-03-15 17:08:24 +01:00
Makefile [S390] irq: merge irq.c and s390_ext.c 2011-05-26 09:48:24 +02:00
mcount.S [S390] cleanup ftrace backend functions 2011-01-05 12:47:31 +01:00
mcount64.S [S390] cleanup ftrace backend functions 2011-01-05 12:47:31 +01:00
mem_detect.c Fix IRQ flag handling naming 2010-10-07 14:08:55 +01:00
module.c modules: Fix module_bug_list list corruption race 2010-10-05 11:29:27 -07:00
nmi.c [S390] irq: have detailed statistics for interrupt types 2011-01-05 12:47:25 +01:00
process.c compat: fix compile breakage on s390 2012-03-12 10:32:38 -07:00
processor.c [S390] prevent unneccesary loops_per_jiffy recalculation 2011-01-05 12:47:32 +01:00
ptrace.c compat: fix compile breakage on s390 2012-03-12 10:32:38 -07:00
reipl.S [S390] Cleanup struct _lowcore usage and defines. 2010-02-26 22:37:31 +01:00
reipl64.S Fix common misspellings 2011-03-31 11:26:23 -03:00
relocate_kernel.S
relocate_kernel64.S
s390_ksyms.c [S390] move EXPORT_SYMBOLs to definitions 2009-03-26 15:24:11 +01:00
sclp.S Merge branch 'for-next' into for-linus 2010-03-08 16:55:37 +01:00
setup.c compat: Re-add missing asm/compat.h include to fix compile breakage on s390 2012-03-19 08:57:58 -07:00
signal.c [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
smp.c [S390] allow setting of upper 32 bit in smp_ctl_set_bit 2011-06-22 16:24:20 +02:00
stacktrace.c [S390] Fix stacktrace compile bug. 2008-07-17 17:22:09 +02:00
suspend.c [S390] hibernate: make sure pfn_is_nosave handles lowcore pages 2009-09-22 22:58:45 +02:00
switch_cpu.S [S390] Fix parameter passing for smp_switch_to_cpu() 2011-04-04 09:43:32 +02:00
switch_cpu64.S [S390] Fix parameter passing for smp_switch_to_cpu() 2011-04-04 09:43:32 +02:00
swsusp_asm64.S Merge branch 'for-35' of git://repo.or.cz/linux-kbuild 2010-06-01 08:55:52 -07:00
sys_s390.c [S390] sys_personality: follow u_long to unsigned int conversion 2010-08-13 10:06:54 +02:00
syscalls.S ns: Wire up the setns system call 2011-05-28 10:48:39 -07:00
sysinfo.c [S390] topology: add SCHED_MC config option 2010-10-29 16:50:49 +02:00
time.c s390/time: fix sched_clock() overflow 2013-01-21 11:44:58 -08:00
topology.c [S390] irq: merge irq.c and s390_ext.c 2011-05-26 09:48:24 +02:00
traps.c [S390] irq: merge irq.c and s390_ext.c 2011-05-26 09:48:24 +02:00
vdso.c mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm 2011-03-23 16:36:55 -04:00
vmlinux.lds.S percpu: Always align percpu output section to PAGE_SIZE 2011-03-24 18:50:09 +01:00
vtime.c [S390] irq: merge irq.c and s390_ext.c 2011-05-26 09:48:24 +02:00