[DTrace-devel] [PATCH] Fix fprobe/kprobe selection

eugene.loh at oracle.com eugene.loh at oracle.com
Wed Feb 19 21:51:42 UTC 2025


From: Eugene Loh <eugene.loh at oracle.com>

In commit 2a09b3bea504 ("fbt: clean up fprobe/kprobe support"),
libdtrace/dt_prov_fbt.c populate() has this change:

    - impl = BPF_HAS(dtp, BPF_FEAT_FENTRY) ? &dt_fbt_fprobe : &dt_fbt_kprobe;
    + dt_fbt = BPF_HAS(dtp, BPF_FEAT_FENTRY) ? dt_fbt_kprobe : dt_fbt_kprobe;

That is, regardless of the BPF_HAS() test, dt_fbt_kprobe is chosen.

Restore the choice to pick up dt_fbt_fprobe when appropriate.

It is hard to devise a test for this unique problem.

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
 libdtrace/dt_prov_fbt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libdtrace/dt_prov_fbt.c b/libdtrace/dt_prov_fbt.c
index f0910c371..eef93879d 100644
--- a/libdtrace/dt_prov_fbt.c
+++ b/libdtrace/dt_prov_fbt.c
@@ -75,7 +75,7 @@ static int populate(dtrace_hdl_t *dtp)
 	dtrace_syminfo_t	sip;
 	dtrace_probedesc_t	pd;
 
-	dt_fbt = BPF_HAS(dtp, BPF_FEAT_FENTRY) ? dt_fbt_kprobe : dt_fbt_kprobe;
+	dt_fbt = BPF_HAS(dtp, BPF_FEAT_FENTRY) ? dt_fbt_fprobe : dt_fbt_kprobe;
 
 	prv = dt_provider_create(dtp, prvname, &dt_fbt, &pattr, NULL);
 	if (prv == NULL)
-- 
2.43.5




More information about the DTrace-devel mailing list