https://github.com/torvalds/linux
Revision 3ff9c075cc767b3060bdac12da72fc94dd7da1b8 authored by Masami Hiramatsu on 23 February 2019, 16:49:52 UTC, committed by Ingo Molnar on 19 April 2019, 12:26:05 UTC
Verify the stack frame pointer on kretprobe trampoline handler,
If the stack frame pointer does not match, it skips the wrong
entry and tries to find correct one.

This can happen if user puts the kretprobe on the function
which can be used in the path of ftrace user-function call.
Such functions should not be probed, so this adds a warning
message that reports which function should be blacklisted.

Tested-by: Andrea Righi <righi.andrea@gmail.com>
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: http://lkml.kernel.org/r/155094059185.6137.15527904013362842072.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
1 parent 3fe3331
History
Tip revision: 3ff9c075cc767b3060bdac12da72fc94dd7da1b8 authored by Masami Hiramatsu on 23 February 2019, 16:49:52 UTC
x86/kprobes: Verify stack frame on kretprobe
Tip revision: 3ff9c07
File Mode Size
bpf
cgroup
configs
debug
dma
events
gcov
irq
livepatch
locking
power
printk
rcu
sched
time
trace
.gitignore -rw-r--r-- 40 bytes
Kconfig.freezer -rw-r--r-- 52 bytes
Kconfig.hz -rw-r--r-- 1.6 KB
Kconfig.locks -rw-r--r-- 4.8 KB
Kconfig.preempt -rw-r--r-- 2.2 KB
Makefile -rw-r--r-- 3.8 KB
acct.c -rw-r--r-- 15.4 KB
async.c -rw-r--r-- 10.4 KB
audit.c -rw-r--r-- 61.3 KB
audit.h -rw-r--r-- 11.0 KB
audit_fsnotify.c -rw-r--r-- 6.0 KB
audit_tree.c -rw-r--r-- 25.7 KB
audit_watch.c -rw-r--r-- 14.7 KB
auditfilter.c -rw-r--r-- 34.3 KB
auditsc.c -rw-r--r-- 68.8 KB
backtracetest.c -rw-r--r-- 2.1 KB
bounds.c -rw-r--r-- 751 bytes
capability.c -rw-r--r-- 14.6 KB
compat.c -rw-r--r-- 10.1 KB
configs.c -rw-r--r-- 2.7 KB
context_tracking.c -rw-r--r-- 6.3 KB
cpu.c -rw-r--r-- 55.0 KB
cpu_pm.c -rw-r--r-- 6.0 KB
crash_core.c -rw-r--r-- 11.5 KB
crash_dump.c -rw-r--r-- 1.3 KB
cred.c -rw-r--r-- 22.4 KB
delayacct.c -rw-r--r-- 5.1 KB
dma.c -rw-r--r-- 3.3 KB
elfcore.c -rw-r--r-- 432 bytes
exec_domain.c -rw-r--r-- 1.1 KB
exit.c -rw-r--r-- 44.4 KB
extable.c -rw-r--r-- 4.8 KB
fail_function.c -rw-r--r-- 7.1 KB
fork.c -rw-r--r-- 63.4 KB
freezer.c -rw-r--r-- 4.5 KB
futex.c -rw-r--r-- 104.1 KB
groups.c -rw-r--r-- 4.9 KB
hung_task.c -rw-r--r-- 7.3 KB
iomem.c -rw-r--r-- 4.7 KB
irq_work.c -rw-r--r-- 4.4 KB
jump_label.c -rw-r--r-- 19.7 KB
kallsyms.c -rw-r--r-- 17.6 KB
kcmp.c -rw-r--r-- 5.7 KB
kcov.c -rw-r--r-- 11.0 KB
kexec.c -rw-r--r-- 7.8 KB
kexec_core.c -rw-r--r-- 31.1 KB
kexec_file.c -rw-r--r-- 31.9 KB
kexec_internal.h -rw-r--r-- 924 bytes
kmod.c -rw-r--r-- 5.0 KB
kprobes.c -rw-r--r-- 63.6 KB
ksysfs.c -rw-r--r-- 6.3 KB
kthread.c -rw-r--r-- 34.0 KB
latencytop.c -rw-r--r-- 7.9 KB
memremap.c -rw-r--r-- 9.9 KB
module-internal.h -rw-r--r-- 959 bytes
module.c -rw-r--r-- 112.9 KB
module_signing.c -rw-r--r-- 2.3 KB
notifier.c -rw-r--r-- 16.3 KB
nsproxy.c -rw-r--r-- 6.5 KB
padata.c -rw-r--r-- 27.1 KB
panic.c -rw-r--r-- 17.4 KB
params.c -rw-r--r-- 23.2 KB
pid.c -rw-r--r-- 11.2 KB
pid_namespace.c -rw-r--r-- 11.4 KB
profile.c -rw-r--r-- 14.8 KB
ptrace.c -rw-r--r-- 32.5 KB
range.c -rw-r--r-- 3.0 KB
reboot.c -rw-r--r-- 13.9 KB
relay.c -rw-r--r-- 32.1 KB
resource.c -rw-r--r-- 40.9 KB
rseq.c -rw-r--r-- 9.9 KB
seccomp.c -rw-r--r-- 45.1 KB
signal.c -rw-r--r-- 113.6 KB
smp.c -rw-r--r-- 21.6 KB
smpboot.c -rw-r--r-- 11.7 KB
smpboot.h -rw-r--r-- 640 bytes
softirq.c -rw-r--r-- 18.6 KB
stackleak.c -rw-r--r-- 3.9 KB
stacktrace.c -rw-r--r-- 1.8 KB
stop_machine.c -rw-r--r-- 17.8 KB
sys.c -rw-r--r-- 62.1 KB
sys_ni.c -rw-r--r-- 9.3 KB
sysctl.c -rw-r--r-- 78.4 KB
sysctl_binary.c -rw-r--r-- 50.2 KB
task_work.c -rw-r--r-- 3.1 KB
taskstats.c -rw-r--r-- 15.4 KB
test_kprobes.c -rw-r--r-- 6.4 KB
torture.c -rw-r--r-- 20.8 KB
tracepoint.c -rw-r--r-- 15.6 KB
tsacct.c -rw-r--r-- 5.1 KB
ucount.c -rw-r--r-- 5.7 KB
uid16.c -rw-r--r-- 5.1 KB
uid16.h -rw-r--r-- 442 bytes
umh.c -rw-r--r-- 19.0 KB
up.c -rw-r--r-- 2.3 KB
user-return-notifier.c -rw-r--r-- 1.3 KB
user.c -rw-r--r-- 5.6 KB
user_namespace.c -rw-r--r-- 33.4 KB
utsname.c -rw-r--r-- 4.0 KB
utsname_sysctl.c -rw-r--r-- 3.4 KB
watchdog.c -rw-r--r-- 21.4 KB
watchdog_hld.c -rw-r--r-- 7.7 KB
workqueue.c -rw-r--r-- 164.0 KB
workqueue_internal.h -rw-r--r-- 2.4 KB

back to top