Files
rockchip-kernel/include/uapi/linux
Daniel Borkmann 6ae08ae3de bpf: Add probe_read_{user, kernel} and probe_read_{user, kernel}_str helpers
The current bpf_probe_read() and bpf_probe_read_str() helpers are broken
in that they assume they can be used for probing memory access for kernel
space addresses /as well as/ user space addresses.

However, plain use of probe_kernel_read() for both cases will attempt to
always access kernel space address space given access is performed under
KERNEL_DS and some archs in-fact have overlapping address spaces where a
kernel pointer and user pointer would have the /same/ address value and
therefore accessing application memory via bpf_probe_read{,_str}() would
read garbage values.

Lets fix BPF side by making use of recently added 3d7081822f ("uaccess:
Add non-pagefault user-space read functions"). Unfortunately, the only way
to fix this status quo is to add dedicated bpf_probe_read_{user,kernel}()
and bpf_probe_read_{user,kernel}_str() helpers. The bpf_probe_read{,_str}()
helpers are kept as-is to retain their current behavior.

The two *_user() variants attempt the access always under USER_DS set, the
two *_kernel() variants will -EFAULT when accessing user memory if the
underlying architecture has non-overlapping address ranges, also avoiding
throwing the kernel warning via 00c42373d3 ("x86-64: add warning for
non-canonical user access address dereferences").

Fixes: a5e8c07059 ("bpf: add bpf_probe_read_str helper")
Fixes: 2541517c32 ("tracing, perf: Implement BPF programs attached to kprobes")
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Link: https://lore.kernel.org/bpf/796ee46e948bc808d54891a1108435f8652c6ca4.1572649915.git.daniel@iogearbox.net
2019-11-02 12:39:12 -07:00
..
2019-01-28 08:13:52 +01:00
2019-07-09 12:11:59 -07:00
2019-05-23 21:07:30 -04:00
2019-03-07 18:32:01 -08:00
2019-01-24 11:11:42 -07:00
2019-09-19 14:22:44 +02:00
2019-09-25 17:51:39 -07:00
2019-08-02 14:44:02 +10:00
2019-09-16 10:18:01 -04:00
2019-06-14 15:00:51 +05:30
2019-02-14 11:51:51 -05:00
2018-12-20 19:13:07 +01:00
2019-03-27 13:30:07 -07:00
2018-06-18 15:11:53 +10:00
2019-08-12 19:33:50 -07:00
2019-09-12 14:59:41 +02:00
2018-09-13 10:46:24 +02:00
2018-09-05 22:27:11 -07:00
2019-09-18 10:43:22 -06:00
2019-09-08 15:37:04 +02:00
2018-07-07 17:41:38 +02:00
2018-08-03 10:03:57 -07:00
2017-11-28 16:54:00 +01:00
2019-08-24 14:20:10 +02:00
2019-08-19 13:04:45 -07:00
2018-04-11 10:28:37 -07:00
2018-12-16 12:15:25 -08:00
2018-12-01 12:38:32 +01:00
2019-05-28 21:37:30 -07:00
2018-01-14 23:06:30 -05:00
2018-01-16 16:47:29 +01:00
2019-09-23 16:10:28 -05:00
2019-10-02 20:32:27 -06:00
2019-01-22 10:21:45 +01:00
2019-07-30 20:34:34 +02:00
2018-03-20 03:17:41 +02:00
2018-04-14 11:59:31 -04:00
2019-10-09 17:06:58 -07:00
2017-11-16 10:49:00 +09:00
2018-04-11 10:28:37 -07:00
2019-02-14 11:51:51 -05:00
2018-09-03 13:29:38 +02:00
2018-02-06 18:32:44 -08:00
2019-09-18 20:17:50 +02:00
2019-08-01 21:49:46 +02:00