Daniel Borkmann says: ==================== bpf-next 2021-10-02 We've added 85 non-merge commits during the last 15 day(s) which contain a total of 132 files changed, 13779 insertions(+), 6724 deletions(-). The main changes are: 1) Massive update on test_bpf.ko coverage for JITs as preparatory work for an upcoming MIPS eBPF JIT, from Johan Almbladh. 2) Add a batched interface for RX buffer allocation in AF_XDP buffer pool, with driver support for i40e and ice from Magnus Karlsson. 3) Add legacy uprobe support to libbpf to complement recently merged legacy kprobe support, from Andrii Nakryiko. 4) Add bpf_trace_vprintk() as variadic printk helper, from Dave Marchevsky. 5) Support saving the register state in verifier when spilling <8byte bounded scalar to the stack, from Martin Lau. 6) Add libbpf opt-in for stricter BPF program section name handling as part of libbpf 1.0 effort, from Andrii Nakryiko. 7) Add a document to help clarifying BPF licensing, from Alexei Starovoitov. 8) Fix skel_internal.h to propagate errno if the loader indicates an internal error, from Kumar Kartikeya Dwivedi. 9) Fix build warnings with -Wcast-function-type so that the option can later be enabled by default for the kernel, from Kees Cook. 10) Fix libbpf to ignore STT_SECTION symbols in legacy map definitions as it otherwise errors out when encountering them, from Toke Høiland-Jørgensen. 11) Teach libbpf to recognize specialized maps (such as for perf RB) and internally remove BTF type IDs when creating them, from Hengqi Chen. 12) Various fixes and improvements to BPF selftests. ====================
Showing the changes to include/uapi (1 of 132 files). Show all
Unified · Split
| @@ -4046,7 +4046,7 @@ union bpf_attr { · 4045 unmodified lines | |||
| 4046 | * arguments. The *data* are a **u64** array and corresponding format string | 4046 | * arguments. The *data* are a **u64** array and corresponding format string |
| 4047 | * values are stored in the array. For strings and pointers where pointees | 4047 | * values are stored in the array. For strings and pointers where pointees |
| 4048 | * are accessed, only the pointer values are stored in the *data* array. | 4048 | * are accessed, only the pointer values are stored in the *data* array. |
| 4049 | * The *data_len* is the size of *data* in bytes. | 4049 | * The *data_len* is the size of *data* in bytes - must be a multiple of 8. |
| 4050 | * | 4050 | * |
| 4051 | * Formats **%s**, **%p{i,I}{4,6}** requires to read kernel memory. | 4051 | * Formats **%s**, **%p{i,I}{4,6}** requires to read kernel memory. |
| 4052 | * Reading kernel memory may fail due to either invalid address or | 4052 | * Reading kernel memory may fail due to either invalid address or |
| @@ -4751,7 +4751,8 @@ union bpf_attr { · 698 unmodified lines | |||
| 4751 | * Each format specifier in **fmt** corresponds to one u64 element | 4751 | * Each format specifier in **fmt** corresponds to one u64 element |
| 4752 | * in the **data** array. For strings and pointers where pointees | 4752 | * in the **data** array. For strings and pointers where pointees |
| 4753 | * are accessed, only the pointer values are stored in the *data* | 4753 | * are accessed, only the pointer values are stored in the *data* |
| 4754 | * array. The *data_len* is the size of *data* in bytes. | 4754 | * array. The *data_len* is the size of *data* in bytes - must be |
| 4755 | * a multiple of 8. | ||
| 4755 | * | 4756 | * |
| 4756 | * Formats **%s** and **%p{i,I}{4,6}** require to read kernel | 4757 | * Formats **%s** and **%p{i,I}{4,6}** require to read kernel |
| 4757 | * memory. Reading kernel memory may fail due to either invalid | 4758 | * memory. Reading kernel memory may fail due to either invalid |
| @@ -4898,6 +4899,16 @@ union bpf_attr { · 140 unmodified lines | |||
| 4898 | * **-EINVAL** if *flags* is not zero. | 4899 | * **-EINVAL** if *flags* is not zero. |
| 4899 | * | 4900 | * |
| 4900 | * **-ENOENT** if architecture does not support branch records. | 4901 | * **-ENOENT** if architecture does not support branch records. |
| 4902 | * | ||
| 4903 | * long bpf_trace_vprintk(const char *fmt, u32 fmt_size, const void *data, u32 data_len) | ||
| 4904 | * Description | ||
| 4905 | * Behaves like **bpf_trace_printk**\ () helper, but takes an array of u64 | ||
| 4906 | * to format and can handle more format args as a result. | ||
| 4907 | * | ||
| 4908 | * Arguments are to be used as in **bpf_seq_printf**\ () helper. | ||
| 4909 | * Return | ||
| 4910 | * The number of bytes written to the buffer, or a negative error | ||
| 4911 | * in case of failure. | ||
| 4901 | */ | 4912 | */ |
| 4902 | #define __BPF_FUNC_MAPPER(FN) \ | 4913 | #define __BPF_FUNC_MAPPER(FN) \ |
| 4903 | FN(unspec), \ | 4914 | FN(unspec), \ |
| @@ -5077,6 +5088,7 @@ union bpf_attr { · 173 unmodified lines | |||
| 5077 | FN(get_attach_cookie), \ | 5088 | FN(get_attach_cookie), \ |
| 5078 | FN(task_pt_regs), \ | 5089 | FN(task_pt_regs), \ |
| 5079 | FN(get_branch_snapshot), \ | 5090 | FN(get_branch_snapshot), \ |
| 5091 | FN(trace_vprintk), \ | ||
| 5080 | /* */ | 5092 | /* */ |
| 5081 | 5093 | ||
| 5082 | /* integer value in 'imm' field of BPF_CALL instruction selects which helper | 5094 | /* integer value in 'imm' field of BPF_CALL instruction selects which helper |