WSL2-Linux-Kernel/kernel/trace
Daniel Borkmann 2d071c643f bpf, trace: make ctx access checks more robust
Make sure that ctx cannot potentially be accessed oob by asserting
explicitly that ctx access size into pt_regs for BPF_PROG_TYPE_KPROBE
programs must be within limits. In case some 32bit archs have pt_regs
not being a multiple of 8, then BPF_DW access could cause such access.

BPF_PROG_TYPE_KPROBE progs don't have a ctx conversion function since
there's no extra mapping needed. kprobe_prog_is_valid_access() didn't
enforce sizeof(long) as the only allowed access size, since LLVM can
generate non BPF_W/BPF_DW access to regs from time to time.

For BPF_PROG_TYPE_TRACEPOINT we don't have a ctx conversion either, so
add a BUILD_BUG_ON() check to make sure that BPF_DW access will not be
a similar issue in future (ctx works on event buffer as opposed to
pt_regs there).

Fixes: 2541517c32 ("tracing, perf: Implement BPF programs attached to kprobes")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-01-16 14:41:42 -05:00
..
Kconfig ftrace: Support full glob matching 2016-11-14 16:42:58 -05:00
Makefile Disable the __builtin_return_address() warning globally after all 2016-10-12 10:23:41 -07:00
blktrace.c block: better op and flags encoding 2016-10-28 08:48:16 -06:00
bpf_trace.c bpf, trace: make ctx access checks more robust 2017-01-16 14:41:42 -05:00
ftrace.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
power-traces.c
ring_buffer.c This release has a few updates: 2016-12-15 13:49:34 -08:00
ring_buffer_benchmark.c
rpm-traces.c
trace.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
trace.h clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
trace_benchmark.c tracing: Allow benchmark to be enabled at early_initcall() 2016-12-09 09:16:15 -05:00
trace_benchmark.h tracing: Have the reg function allow to fail 2016-12-09 09:13:30 -05:00
trace_branch.c tracing: Make __buffer_unlock_commit() always_inline 2016-11-23 20:30:51 -05:00
trace_clock.c
trace_entries.h tracing: Add new trace_marker_raw 2016-11-15 15:13:59 -05:00
trace_event_perf.c
trace_events.c tracing: Have system enable return error if one of the events fail 2016-12-09 09:15:41 -05:00
trace_events_filter.c tracing/filter: Define op as the enum that it is 2016-11-14 16:42:59 -05:00
trace_events_filter_test.h
trace_events_hist.c
trace_events_trigger.c tracing: Call traceoff trigger after event is recorded 2016-09-23 09:47:59 -04:00
trace_export.c
trace_functions.c
trace_functions_graph.c tracing/fgraph: Have wakeup and irqsoff tracers ignore graph functions too 2016-12-09 09:21:35 -05:00
trace_hwlat.c tracing: Make __buffer_unlock_commit() always_inline 2016-11-23 20:30:51 -05:00
trace_irqsoff.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
trace_kdb.c
trace_kprobe.c kprobes/trace: Fix kprobe selftest for newer gcc 2016-12-12 21:21:43 -05:00
trace_mmiotrace.c
trace_nop.c
trace_output.c tracing: Add new trace_marker_raw 2016-11-15 15:13:59 -05:00
trace_output.h
trace_printk.c
trace_probe.c ftrace: kprobe: uprobe: Show u8/u16/u32/u64 types in decimal 2016-08-23 17:06:38 -03:00
trace_probe.h ftrace: kprobe: uprobe: Show u8/u16/u32/u64 types in decimal 2016-08-23 17:06:38 -03:00
trace_sched_switch.c
trace_sched_wakeup.c clocksource: Use a plain u64 instead of cycle_t 2016-12-25 11:04:12 +01:00
trace_selftest.c
trace_selftest_dynamic.c
trace_seq.c
trace_stack.c
trace_stat.c
trace_stat.h
trace_syscalls.c tracing/syscalls: fix multiline in error message text 2016-09-29 10:25:23 +02:00
trace_uprobe.c This release cycle is rather small. Just a few fixes to tracing. 2016-10-06 11:48:41 -07:00
tracing_map.c
tracing_map.h