On Mon, 20 Apr 2026 14:56:31 +0000 (UTC), [email protected] wrote: >> diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c >> index 1eb15a51c7dc..06aea4e499a1 100644 >> --- a/kernel/bpf/syscall.c >> +++ b/kernel/bpf/syscall.c > > [ ... ] > >> @@ -6317,7 +6317,12 @@ static int __sys_bpf(enum bpf_cmd cmd, bpfptr_t >> uattr, unsigned int size, >> err = bpf_raw_tracepoint_open(&attr); >> break; >> case BPF_BTF_LOAD: >> - err = bpf_btf_load(&attr, uattr, size); >> + if (size >= offsetofend(union bpf_attr, btf_log_true_size)) >> + offsetof_log_true_size = offsetof(union bpf_attr, >> btf_log_true_size); >> + err = bpf_log_attr_init(&attr_log, attr.btf_log_buf, >> attr.btf_log_size, >> + attr.btf_log_level, >> offsetof_log_true_size, uattr, >> + &attr_common, uattr_common, >> size_common); >> + err = err ?: bpf_btf_load(&attr, uattr, &attr_log); > > Should the log_true_size offset be set only for user space calls? In v10 > review, Andrii Nakryiko noted that log_true_size should only be set for > user space, not kernel space calls. > > https://lore.kernel.org/bpf/caef4bzy3ga+860rodlaxqqo3j5agj24pmku1yv3+ghjpy0d...@mail.gmail.com/ > > The current code does not check uattr.is_kernel before setting > offsetof_log_true_size. This could cause issues when bpf_sys_bpf() calls > __sys_bpf() with KERNEL_BPFPTR, as it would attempt to write log_true_size > to a kernel pointer instead of a user space pointer. >
Not true. 'uattr.is_kernel' will be checked in copy_to_bpfptr_offset(). When write log_true_size to a kernel pointer, memcpy() will be used. Thanks, Leon >> break; >> case BPF_BTF_GET_FD_BY_ID: >> err = bpf_btf_get_fd_by_id(&attr); > > > --- > AI reviewed your patch. Please fix the bug or email reply why it's not a bug. > See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md > > CI run summary: https://github.com/kernel-patches/bpf/actions/runs/24672239158

