[DTrace-devel] [PATCH] Move free(%r0) in stack() actions

Kris Van Hees kris.van.hees at oracle.com
Thu Dec 9 05:50:37 UTC 2021


On Fri, Dec 03, 2021 at 07:58:16PM -0500, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> We should free BPF_REG_0 as soon as it has been used for the last
> time and before calling dt_cg_probe_error().
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

> ---
>  libdtrace/dt_cg.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/libdtrace/dt_cg.c b/libdtrace/dt_cg.c
> index 13feae17..16690037 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -1641,10 +1641,10 @@ dt_cg_act_stack(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
>  	emit(dlp,  BPF_CALL_HELPER(BPF_FUNC_get_stack));
>  	dt_regset_free_args(drp);
>  	emit(dlp,  BPF_BRANCH_IMM(BPF_JSGE, BPF_REG_0, 0, lbl_valid));
> +	dt_regset_free(drp, BPF_REG_0);
>  	dt_cg_probe_error(pcb, -1, DTRACEFLT_BADSTACK, 0);
>  	emitl(dlp, lbl_valid,
>  		   BPF_NOP());
> -	dt_regset_free(drp, BPF_REG_0);
>  }
>  
>  static void
> @@ -1811,10 +1811,10 @@ dt_cg_act_ustack(dt_pcb_t *pcb, dt_node_t *dnp, dtrace_actkind_t kind)
>  	emit(dlp,  BPF_CALL_HELPER(BPF_FUNC_get_stack));
>  	dt_regset_free_args(drp);
>  	emit(dlp,  BPF_BRANCH_IMM(BPF_JSGE, BPF_REG_0, 0, lbl_valid));
> +	dt_regset_free(drp, BPF_REG_0);
>  	dt_cg_probe_error(pcb, -1, DTRACEFLT_BADSTACK, 0);
>  	emitl(dlp, lbl_valid,
>  		   BPF_NOP());
> -	dt_regset_free(drp, BPF_REG_0);
>  }
>  
>  typedef void dt_cg_action_f(dt_pcb_t *, dt_node_t *, dtrace_actkind_t);
> -- 
> 2.18.4
> 
> 
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel



More information about the DTrace-devel mailing list