Re: [PATCHv5 bpf-next 01/28] ftrace: Add ftrace_hash_count function

Jiri Olsa <[email protected]>
Newsgroups dev.linux.lists.sashiko,org.kernel.vger.bpf
Message-ID <aec7Vqu2wVDbx8QU@krava>
On Sat, Apr 18, 2026 at 12:58:20AM +0000, [email protected] wrote:
> Sashiko AI review found 1 potential issue(s):
> - [Low] ftrace_hash_count() is declared under CONFIG_DYNAMIC_FTRACE but defined under CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS, leading to potential linker errors.
> --
> 
> commit 62c46ea6c0c10abc0df16b7c684809496d439e2f
> Author: Jiri Olsa <[email protected]>
> 
> ftrace: Add ftrace_hash_count function
> 
> This commit adds an external ftrace_hash_count function so the hash
> count can be obtained outside of the ftrace object.
> 
> > diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
> > index 28b30c6f10314..9d9ae1bc692ae 100644
> > --- a/include/linux/ftrace.h
> > +++ b/include/linux/ftrace.h
> > @@ -415,6 +415,7 @@ struct ftrace_hash *alloc_ftrace_hash(int size_bits);
> >  void free_ftrace_hash(struct ftrace_hash *hash);
> >  struct ftrace_func_entry *add_ftrace_hash_entry_direct(struct ftrace_hash *hash,
> >  						       unsigned long ip, unsigned long direct);
> > +unsigned long ftrace_hash_count(struct ftrace_hash *hash);
> >  
> >  /* The hash used to know what functions callbacks trace */
> >  struct ftrace_ops_hash {
> 
> [ ... ]
> 
> > diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> > index b2611de3f5943..57ab01fd00bda 100644
> > --- a/kernel/trace/ftrace.c
> > +++ b/kernel/trace/ftrace.c
> > @@ -6288,11 +6288,16 @@ int modify_ftrace_direct(struct ftrace_ops *ops, unsigned long addr)
> >  }
> >  EXPORT_SYMBOL_GPL(modify_ftrace_direct);
> >  
> > -static unsigned long hash_count(struct ftrace_hash *hash)
> > +static inline unsigned long hash_count(struct ftrace_hash *hash)
> >  {
> >  	return hash ? hash->count : 0;
> >  }
> >  
> > +unsigned long ftrace_hash_count(struct ftrace_hash *hash)
> > +{
> > +	return hash_count(hash);
> > +}
> > +
> 
> If a kernel is configured with CONFIG_DYNAMIC_FTRACE=y but 
> CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS=n, will this result in a linker error?
> 
> The declaration in include/linux/ftrace.h is located under 
> CONFIG_DYNAMIC_FTRACE, but this definition in kernel/trace/ftrace.c is placed 
> inside a CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS block.
> 
> Code built-in to the kernel (like BPF or tracing extensions) that attempts 
> to use this new API could compile successfully but fail to link on 
> architectures that do not support direct ftrace calls.

right, will check the compilation for such config

jirka
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.