* [PATCH 4/6] fbt: do not provide untraceable functions (for fprobes)
@ 2026-04-28 19:05 Kris Van Hees
2026-04-28 20:49 ` Nick Alcock
0 siblings, 1 reply; 2+ messages in thread
From: Kris Van Hees @ 2026-04-28 19:05 UTC (permalink / raw)
To: dtrace, dtrace-devel
Ensure that we do not provide FBT probes for functions that cannot be
probed using BPF fentry/fexit probes if fprobes are the default.
The provide_probe() function now takes a dt_module_t argument so that
dt_btf_func_is_traceable() can be called.
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
---
libdtrace/dt_prov_fbt.c | 39 ++++++++++++++++++++++++++-------------
1 file changed, 26 insertions(+), 13 deletions(-)
diff --git a/libdtrace/dt_prov_fbt.c b/libdtrace/dt_prov_fbt.c
index 59e4583b2..d6f57c67f 100644
--- a/libdtrace/dt_prov_fbt.c
+++ b/libdtrace/dt_prov_fbt.c
@@ -86,14 +86,31 @@ static int populate(dtrace_hdl_t *dtp)
}
/* Create a probe (if it does not exist yet). */
-static int provide_probe(dtrace_hdl_t *dtp, const dtrace_probedesc_t *pdp)
+static int provide_probe(dtrace_hdl_t *dtp, dt_module_t *dmp,
+ dtrace_probedesc_t *pdp)
{
dt_provider_t *prv = dt_provider_lookup(dtp, pdp->prv);
if (prv == NULL)
return 0;
+ pdp->mod = dmp->dm_name;
if (dt_probe_lookup(dtp, pdp) != NULL)
return 0;
+
+ /*
+ * Do not provide fentry/fexit-based probes for functions that BPF does
+ * not currently support (see dt_btf_func_is_traceable() for more
+ * details).
+ */
+ if (prv->impl->prog_type == BPF_PROG_TYPE_TRACING) {
+ int32_t btf_id;
+
+ btf_id = dt_btf_lookup_name_kind(dtp, dmp, pdp->fun, BTF_KIND_FUNC);
+ if (btf_id <= 0 ||
+ !dt_btf_func_is_traceable(dtp, dmp->dm_btf, btf_id))
+ return -1;
+ }
+
if (dt_tp_probe_insert(dtp, prv, pdp->prv, pdp->mod, pdp->fun, pdp->prb))
return 1;
@@ -173,16 +190,15 @@ static int provide(dtrace_hdl_t *dtp, const dtrace_probedesc_t *pdp)
pd.id = DTRACE_IDNONE;
pd.prv = pdp->prv;
- pd.mod = dmp->dm_name;
pd.fun = pdp->fun;
if (prb & FBT_ENTRY) {
pd.prb = "entry";
- n += provide_probe(dtp, &pd);
+ n += provide_probe(dtp, dmp, &pd);
}
if (prb & FBT_RETURN) {
pd.prb = "return";
- n += provide_probe(dtp, &pd);
+ n += provide_probe(dtp, dmp, &pd);
}
return n;
@@ -190,22 +206,20 @@ static int provide(dtrace_hdl_t *dtp, const dtrace_probedesc_t *pdp)
sym = dt_symbol_by_name(dtp, pdp->fun);
while (sym != NULL) {
- const char *mod = dt_symbol_module(sym)->dm_name;
-
+ dmp = dt_symbol_module(sym);
if (dt_symbol_traceable(sym) &&
- dt_gmatch(mod, pdp->mod)) {
+ dt_gmatch(dmp->dm_name, pdp->mod)) {
pd.id = DTRACE_IDNONE;
pd.prv = pdp->prv;
- pd.mod = mod;
pd.fun = pdp->fun;
if (prb & FBT_ENTRY) {
pd.prb = "entry";
- n += provide_probe(dtp, &pd);
+ n += provide_probe(dtp, dmp, &pd);
}
if (prb & FBT_RETURN) {
pd.prb = "return";
- n += provide_probe(dtp, &pd);
+ n += provide_probe(dtp, dmp, &pd);
}
}
@@ -242,16 +256,15 @@ static int provide(dtrace_hdl_t *dtp, const dtrace_probedesc_t *pdp)
pd.id = DTRACE_IDNONE;
pd.prv = pdp->prv;
- pd.mod = smp->dm_name;
pd.fun = fun;
if (prb & FBT_ENTRY) {
pd.prb = "entry";
- n += provide_probe(dtp, &pd);
+ n += provide_probe(dtp, smp, &pd);
}
if (prb & FBT_RETURN) {
pd.prb = "return";
- n += provide_probe(dtp, &pd);
+ n += provide_probe(dtp, smp, &pd);
}
}
--
2.53.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 4/6] fbt: do not provide untraceable functions (for fprobes)
2026-04-28 19:05 [PATCH 4/6] fbt: do not provide untraceable functions (for fprobes) Kris Van Hees
@ 2026-04-28 20:49 ` Nick Alcock
0 siblings, 0 replies; 2+ messages in thread
From: Nick Alcock @ 2026-04-28 20:49 UTC (permalink / raw)
To: Kris Van Hees; +Cc: dtrace, dtrace-devel
On 28 Apr 2026, Kris Van Hees outgrape:
> Ensure that we do not provide FBT probes for functions that cannot be
> probed using BPF fentry/fexit probes if fprobes are the default.
>
> The provide_probe() function now takes a dt_module_t argument so that
> dt_btf_func_is_traceable() can be called.
>
> Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Nick Alcock <nick.alcock@oracle.com>
--
NULL && (void)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-28 20:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-28 19:05 [PATCH 4/6] fbt: do not provide untraceable functions (for fprobes) Kris Van Hees
2026-04-28 20:49 ` Nick Alcock
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox