Files
kernel_arpi/include/uapi/linux
Martin KaFai Lau c454a46b5e bpf: Add bpf_line_info support
This patch adds bpf_line_info support.

It accepts an array of bpf_line_info objects during BPF_PROG_LOAD.
The "line_info", "line_info_cnt" and "line_info_rec_size" are added
to the "union bpf_attr".  The "line_info_rec_size" makes
bpf_line_info extensible in the future.

The new "check_btf_line()" ensures the userspace line_info is valid
for the kernel to use.

When the verifier is translating/patching the bpf_prog (through
"bpf_patch_insn_single()"), the line_infos' insn_off is also
adjusted by the newly added "bpf_adj_linfo()".

If the bpf_prog is jited, this patch also provides the jited addrs (in
aux->jited_linfo) for the corresponding line_info.insn_off.
"bpf_prog_fill_jited_linfo()" is added to fill the aux->jited_linfo.
It is currently called by the x86 jit.  Other jits can also use
"bpf_prog_fill_jited_linfo()" and it will be done in the followup patches.
In the future, if it deemed necessary, a particular jit could also provide
its own "bpf_prog_fill_jited_linfo()" implementation.

A few "*line_info*" fields are added to the bpf_prog_info such
that the user can get the xlated line_info back (i.e. the line_info
with its insn_off reflecting the translated prog).  The jited_line_info
is available if the prog is jited.  It is an array of __u64.
If the prog is not jited, jited_line_info_cnt is 0.

The verifier's verbose log with line_info will be done in
a follow up patch.

Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2018-12-09 13:54:38 -08:00
..
2018-07-23 19:18:10 +01:00
2018-08-06 10:24:33 +02:00
2018-08-22 10:52:49 -07:00
2018-12-09 13:54:38 -08:00
2018-10-31 12:13:47 -07:00
2018-07-19 13:58:44 -07:00
2018-11-17 20:33:32 -08:00
2018-09-04 11:35:03 +08:00
2018-06-18 15:11:53 +10:00
2018-10-15 15:43:07 +02:00
2018-09-13 10:46:24 +02:00
2018-09-05 22:27:11 -07:00
2018-07-17 15:33:47 +02:00
2018-07-07 17:41:38 +02:00
2018-08-03 10:03:57 -07:00
2018-04-11 10:28:37 -07:00
2018-10-17 13:56:58 -07:00
2018-06-15 18:10:01 -03:00
2018-05-31 00:13:56 +08:00
2018-03-20 03:17:41 +02:00
2018-04-14 11:59:31 -04:00
2018-11-19 12:25:43 -08:00
2018-04-11 10:28:37 -07:00
2018-09-03 13:29:38 +02:00