Re: [PATCH bpf-next v1 03/10] bpf: Verifier support for KF_IMPLICIT_ARGS

From: Eduard Zingerman

Date: Tue Jan 13 2026 - 20:06:05 EST


On Tue, 2026-01-13 at 16:03 -0800, Ihor Solodrai wrote:
> On 1/13/26 1:59 PM, Eduard Zingerman wrote:
> > On Fri, 2026-01-09 at 10:48 -0800, Ihor Solodrai wrote:
> >
> > [...]
> >
> > > --- a/kernel/bpf/verifier.c
> > > +++ b/kernel/bpf/verifier.c
> > > @@ -3271,6 +3271,38 @@ static struct btf *find_kfunc_desc_btf(struct bpf_verifier_env *env, s16 offset)
> > > return btf_vmlinux ?: ERR_PTR(-ENOENT);
> > > }
> > >
> > > +#define KF_IMPL_SUFFIX "_impl"
> > > +
> > > +static const struct btf_type *find_kfunc_impl_proto(struct bpf_verifier_env *env,
> > > + struct btf *btf,
> > > + const char *func_name)
> > > +{
> > > + char impl_name[KSYM_SYMBOL_LEN];
> >
> > Oh, as we discussed already, this should use env->tmp_str_buf.
>
> The env->tmp_str_buf size is smaller:
>
> #define TMP_STR_BUF_LEN 320
>
> *And* there is already a local char buffer of size KSYM_SYMBOL_LEN
> already in use in verifier.c:
>
> int bpf_check_attach_target(...) {
> bool prog_extension = prog->type == BPF_PROG_TYPE_EXT;
> bool prog_tracing = prog->type == BPF_PROG_TYPE_TRACING;
> char trace_symbol[KSYM_SYMBOL_LEN];
> [...]
>
> Since these are function names, the real limit is KSYM_SYMBOL_LEN,
> right?
>
> Sure >320 chars long kfunc name is unlikely, but technically possible.

320 is good enough, you'll be able to cover this:

kfunc_trace_long_descriptive_kernel_symbol_for_tracing_scheduler_memory_io_and_interrupt_paths_during_runtime_analysis_of_latency_throughput_and_resource_contention_on_large_scale_multiprocessor_linux_systems_using_bpf_and_kprobes_without_requiring_kernel_recompilation_or_system_restart_for_production_use_cases_v2x

But not this:

kfunc_trace_kernel_scheduler_and_memory_management_path_for_observing_task_lifecycle_events_context_switches_page_fault_handling_and_io_wait_states_while_debugging_performance_regressions_on_large_multiprocessor_systems_running_preemptible_linux_kernels_with_bpf_tracing_and_dynamic_instrumentation_enabled_for_deep_visibility_into_runtime_behavior_and_latency_sensitive_code_paths_without_recompilation.

Should suffice, I think.