Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf

Daniel Borkmann says:

====================
pull-request: bpf 2022-05-28

We've added 2 non-merge commits during the last 1 day(s) which contain
a total of 2 files changed, 6 insertions(+), 10 deletions(-).

The main changes are:

1) Fix ldx_probe_mem instruction in interpreter by properly zero-extending
the bpf_probe_read_kernel() read content, from Menglong Dong.

2) Fix stacktrace_build_id BPF selftest given urandom_read has been renamed
into urandom_read_iter in random driver, from Song Liu.

* https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf:
bpf: Fix probe read error in ___bpf_prog_run()
selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read
====================

Link: https://lore.kernel.org/r/20220527235042.8526-1-daniel@iogearbox.net
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+6 -10
+5 -9
kernel/bpf/core.c
··· 1953 1953 CONT; \ 1954 1954 LDX_MEM_##SIZEOP: \ 1955 1955 DST = *(SIZE *)(unsigned long) (SRC + insn->off); \ 1956 + CONT; \ 1957 + LDX_PROBE_MEM_##SIZEOP: \ 1958 + bpf_probe_read_kernel(&DST, sizeof(SIZE), \ 1959 + (const void *)(long) (SRC + insn->off)); \ 1960 + DST = *((SIZE *)&DST); \ 1956 1961 CONT; 1957 1962 1958 1963 LDST(B, u8) ··· 1965 1960 LDST(W, u32) 1966 1961 LDST(DW, u64) 1967 1962 #undef LDST 1968 - #define LDX_PROBE(SIZEOP, SIZE) \ 1969 - LDX_PROBE_MEM_##SIZEOP: \ 1970 - bpf_probe_read_kernel(&DST, SIZE, (const void *)(long) (SRC + insn->off)); \ 1971 - CONT; 1972 - LDX_PROBE(B, 1) 1973 - LDX_PROBE(H, 2) 1974 - LDX_PROBE(W, 4) 1975 - LDX_PROBE(DW, 8) 1976 - #undef LDX_PROBE 1977 1963 1978 1964 #define ATOMIC_ALU_OP(BOP, KOP) \ 1979 1965 case BOP: \
+1 -1
tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c
··· 39 39 __type(value, stack_trace_t); 40 40 } stack_amap SEC(".maps"); 41 41 42 - SEC("kprobe/urandom_read") 42 + SEC("kprobe/urandom_read_iter") 43 43 int oncpu(struct pt_regs *args) 44 44 { 45 45 __u32 max_len = sizeof(struct bpf_stack_build_id)