Thread (6 messages) 6 messages, 2 authors, 2025-04-13

Re: [PATCH bpf] ftrace: fix incorrect hash size in register_ftrace_direct()

From: Menglong Dong <hidden>
Date: 2025-04-12 14:34:58
Also in: bpf, lkml

On Sat, Apr 12, 2025 at 10:32 PM Menglong Dong [off-list ref] wrote:
On Sat, Apr 12, 2025 at 10:09 PM Steven Rostedt [off-list ref] wrote:
quoted
On Sat, 12 Apr 2025 21:33:48 +0800
Menglong Dong [off-list ref] wrote:
quoted
The max ftrace hash bits is made fls(32) in register_ftrace_direct(),
which seems illogical, and it seems to be a spelling mistake.

Just fix it.

(Do I misunderstand something?)
I think the logic is incorrect and this patch doesn't fix it.
quoted
Fixes: d05cb470663a ("ftrace: Fix modification of direct_function hash while in use")
Signed-off-by: Menglong Dong <redacted>
---
 kernel/trace/ftrace.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 1a48aedb5255..7697605a41e6 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -5914,7 +5914,7 @@ int register_ftrace_direct(struct ftrace_ops *ops, unsigned long addr)

      /* Make a copy hash to place the new and the old entries in */
      size = hash->count + direct_functions->count;
-     if (size > 32)
+     if (size < 32)
              size = 32;
      new_hash = alloc_ftrace_hash(fls(size));
      if (!new_hash)
The above probably should be:

        size = hash->count + direct_functions->count
        size = fls(size);
        if (size > FTRACE_HASH_MAX_BITS)
                size = FTRACE_HASH_MAX_BITS;
        new_hash = alloc_ftrace_hash(size);
Yeah, this seems to make more sense. And I'll send a V2
later.

BTW, Should we still keep the "size = min(size, 32)" logic
Oops, I mean "size =  max(size, 32); size = fls(size);" here :/
to avoid the hash bits being too small, just like the origin
logic in "dup_hash"?

Thanks!
Menglong Dong
quoted
-- Steve
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help