lineage_android_kernel_xiao.../kernel
Thomas Gleixner 65cb24de03 posix-timers: Sanitize overrun handling
[ Upstream commit 78c9c4dfbf8c04883941445a195276bb4bb92c76 ]

The posix timer overrun handling is broken because the forwarding functions
can return a huge number of overruns which does not fit in an int. As a
consequence timer_getoverrun(2) and siginfo::si_overrun can turn into
random number generators.

The k_clock::timer_forward() callbacks return a 64 bit value now. Make
k_itimer::ti_overrun[_last] 64bit as well, so the kernel internal
accounting is correct. 3Remove the temporary (int) casts.

Add a helper function which clamps the overrun value returned to user space
via timer_getoverrun(2) or siginfo::si_overrun limited to a positive value
between 0 and INT_MAX. INT_MAX is an indicator for user space that the
overrun value has been clamped.

Reported-by: Team OWL337 <icytxw@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: John Stultz <john.stultz@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Link: https://lkml.kernel.org/r/20180626132705.018623573@linutronix.de
[florian: Make patch apply to v4.9.135]
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2018-11-10 07:43:01 -08:00
..
bpf bpf: fix references to free_bpf_prog_info() in comments 2018-08-03 07:55:23 +02:00
configs
debug kdb: make "mdr" command repeat 2018-05-30 07:50:51 +02:00
events perf/core: Fix locking for children siblings group read 2018-11-10 07:42:54 -08:00
gcov
irq genirq: Make force irq threading setup more robust 2018-08-09 12:17:57 +02:00
livepatch
locking locking/osq_lock: Fix osq_lock queue corruption 2018-09-19 22:47:11 +02:00
power PM / sleep: wakeup: Fix build error caused by missing SRCU support 2018-09-09 20:01:23 +02:00
printk printk/tracing: Do not trace printk_nmi_enter() 2018-09-09 20:01:25 +02:00
rcu rcu: Call touch_nmi_watchdog() while printing stall warnings 2018-05-30 07:50:50 +02:00
sched sched/fair: Fix throttle_list starvation with low CFS quota 2018-11-10 07:43:01 -08:00
time posix-timers: Sanitize overrun handling 2018-11-10 07:43:01 -08:00
trace ring-buffer: Allow for rescheduling when removing pages 2018-09-29 03:07:32 -07:00
.gitignore
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
Makefile
acct.c kernel/acct.c: fix the acct->needcheck check in check_free_space() 2018-01-10 09:29:51 +01:00
async.c kernel/async.c: revert "async: simplify lowest_in_progress()" 2018-02-17 13:21:18 +01:00
audit.c audit: return on memory error to avoid null pointer dereference 2018-05-30 07:50:49 +02:00
audit.h
audit_fsnotify.c
audit_tree.c
audit_watch.c audit: fix use-after-free in audit_add_watch 2018-09-26 08:36:37 +02:00
auditfilter.c audit: allow not equal op for audit by executable 2018-08-03 07:55:25 +02:00
auditsc.c audit: allow not equal op for audit by executable 2018-08-03 07:55:25 +02:00
backtracetest.c
bounds.c
capability.c
cgroup.c cgroup: Fix deadlock in cpu hotplug path 2018-10-13 09:18:56 +02:00
cgroup_freezer.c
cgroup_pids.c
compat.c
configs.c
context_tracking.c
cpu.c cpu/hotplug: Non-SMP machines do not make use of booted_once 2018-08-15 18:14:55 +02:00
cpu_pm.c
cpuset.c sched/cpuset/pm: Fix cpuset vs. suspend-resume bugs 2017-10-12 11:51:25 +02:00
crash_dump.c
cred.c
delayacct.c
dma.c
elfcore.c
exec_domain.c
exit.c kernel/exit.c: avoid undefined behaviour when calling wait4() 2018-05-19 10:27:01 +02:00
extable.c
fork.c kthread: Fix use-after-free if kthread fork fails 2018-09-19 22:47:10 +02:00
freezer.c
futex.c futex: futex_wake_op, do not fail on invalid op 2018-11-10 07:42:54 -08:00
futex_compat.c
groups.c kernel: make groups_sort calling a responsibility group_info allocators 2018-01-10 09:29:52 +01:00
hung_task.c
irq_work.c
jump_label.c jump_label: Invoke jump_label_test() via early_initcall() 2017-12-14 09:28:24 +01:00
kallsyms.c
kcmp.c
kcov.c kcov: ensure irq code sees a valid area 2018-08-03 07:55:12 +02:00
kexec.c
kexec_core.c objtool, x86: Add several functions and files to the objtool whitelist 2018-06-05 10:28:57 +02:00
kexec_file.c
kexec_internal.h
kmod.c
kprobes.c kprobes: Make list and blacklist root user read only 2018-09-05 09:20:10 +02:00
ksysfs.c
kthread.c kthread, tracing: Don't expose half-written comm when creating kthreads 2018-08-03 07:55:12 +02:00
latencytop.c
membarrier.c
memremap.c mm: Fix devm_memremap_pages() collision handling 2018-02-28 10:18:34 +01:00
module-internal.h
module.c module: exclude SHN_UNDEF symbols from kallsyms api 2018-10-03 17:01:48 -07:00
module_signing.c
notifier.c
nsproxy.c
padata.c
panic.c
params.c
pid.c pidns: disable pid allocation if pid_ns_prepare_proc() is failed in alloc_pid() 2018-04-13 19:47:53 +02:00
pid_namespace.c
profile.c
ptrace.c
range.c
reboot.c
relay.c kernel/relay.c: limit kmalloc size to KMALLOC_MAX_SIZE 2018-05-30 07:50:29 +02:00
resource.c resource: fix integer overflow at reallocation 2018-04-24 09:34:09 +02:00
seccomp.c seccomp: Move speculation migitation control to arch code 2018-05-22 16:58:02 +02:00
signal.c kernel/signal.c: avoid undefined behaviour in kill_something_info 2018-05-30 07:50:18 +02:00
smp.c cpu/hotplug: Fix SMT supported evaluation 2018-08-15 18:14:53 +02:00
smpboot.c
smpboot.h
softirq.c Mark HI and TASKLET softirq synchronous 2018-08-15 18:14:42 +02:00
stacktrace.c
stop_machine.c stop_machine: Use raw spinlocks 2018-08-03 07:55:24 +02:00
sys.c sys: don't hold uts_sem while accessing userspace memory 2018-09-09 20:01:24 +02:00
sys_ni.c
sysctl.c sched/sysctl: Check user input value of sysctl_sched_time_avg 2018-09-05 09:20:04 +02:00
sysctl_binary.c
task_work.c
taskstats.c
test_kprobes.c
torture.c
tracepoint.c tracepoint: Do not warn on ENOMEM 2018-05-09 09:50:20 +02:00
tsacct.c
ucount.c
uid16.c kernel: make groups_sort calling a responsibility group_info allocators 2018-01-10 09:29:52 +01:00
up.c
user-return-notifier.c
user.c
user_namespace.c userns: move user access out of the mutex 2018-09-09 20:01:24 +02:00
utsname.c
utsname_sysctl.c sys: don't hold uts_sem while accessing userspace memory 2018-09-09 20:01:24 +02:00
watchdog.c
watchdog_hld.c
workqueue.c workqueue: use put_device() instead of kfree() 2018-05-30 07:50:36 +02:00
workqueue_internal.h workqueue: Fix NULL pointer dereference 2017-11-15 15:53:17 +01:00