[DTrace-devel] [PATCH 1/4] cg: fix ++/-- dynvar storage

Eugene Loh eugene.loh at oracle.com
Mon Mar 4 21:06:39 UTC 2024


Reviewed-by: Eugene Loh <eugene.loh at oracle.com>

On 3/4/24 13:47, Nick Alcock via DTrace-devel wrote:
> This function mocks up a fake right hand side for dt_cg_store_var(), but the
> fakery is only partial, and it fails to initialize dn_kind, which
> dt_cg_store_var() then relies upon.  We usually survive, but it's still
> using random junk off the stack.
>
> Fix trivial.
>
> Signed-off-by: Nick Alcock <nick.alcock 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 1b2dbb848a5fd..949e4110750d8 100644
> --- a/libdtrace/dt_cg.c
> +++ b/libdtrace/dt_cg.c
> @@ -4338,6 +4338,7 @@ dt_cg_incdec_op(dt_node_t *dnp, dt_irlist_t *dlp, dt_regset_t *drp, uint_t op,
>   		 * so we fake one here.
>   		 */
>   		val.dn_op = DT_TOK_INT;
> +		val.dn_kind = DT_NODE_INT;
>   		val.dn_value = op == BPF_ADD ? adj : -adj;
>   
>   		lbl_dflt = dt_irlist_label(dlp);



More information about the DTrace-devel mailing list