[DTrace-devel] [PATCH] Fix %r0 register leak
Kris Van Hees
kris.van.hees at oracle.com
Sat Dec 11 05:55:29 UTC 2021
The dt_cg_load_var() function was not properly freeing the %r0 register
for by-ref loads. This caused a spill/fill pair to be generated for the
dt_cg_check_notnull() invocation.
Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
---
libdtrace/dt_cg.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
index 46aaba65..296fcd42 100644
--- a/libdtrace/dt_cg.c
+++ b/libdtrace/dt_cg.c
@@ -2086,6 +2086,7 @@ dt_cg_load_var(dt_node_t *dst, dt_irlist_t *dlp, dt_regset_t *drp)
if (dst->dn_flags & DT_NF_REF) {
emit(dlp, BPF_MOV_REG(dst->dn_reg, BPF_REG_0));
+ dt_regset_free(drp, BPF_REG_0);
dt_cg_check_notnull(dlp, drp, dst->dn_reg);
} else {
size_t size = dt_node_type_size(dst);
--
2.34.1
More information about the DTrace-devel
mailing list