On Thu, 21 May 2026 10:58:04 +0900
Masami Hiramatsu (Google) <[email protected]> wrote:

> On Wed, 20 May 2026 12:48:32 -0400
> Steven Rostedt <[email protected]> wrote:
> 
> > On Wed, 20 May 2026 15:20:21 +0900
> > Masami Hiramatsu (Google) <[email protected]> wrote:
> >   
> > > > > > @@ -515,6 +542,10 @@ static void clear_btf_context(struct 
> > > > > > traceprobe_parse_context *ctx)
> > > > > >             ctx->params = NULL;
> > > > > >             ctx->nr_params = 0;
> > > > > >     }
> > > > > > +   if (ctx->struct_btf) {
> > > > > > +           btf_put(ctx->struct_btf);
> > > > > > +           ctx->last_struct = NULL;      
> > > > > 
> > > > > [Severity: Low]
> > > > > Should ctx->struct_btf be explicitly set to NULL after btf_put() drops
> > > > > the reference?    
> > > > 
> > > > I'm thinking of dropping it in the '(' switch case.    
> > > 
> > > Can you consider making the '(' switch case part as a helper
> > > function because it depends on CONFIG_DEBUG_INFO_BTF?  
> > 
> > Should we just encapsulate that entire case statement with:
> > 
> > #ifdef CONFIG_DEBUG_INFO_BTF
> > [..]
> > #endif  
> 
> Yeah that is possible, and I rather like to make it a separate
> function for simplifying switch-case block for readability.
> 

Hmm, but as a separate function, you mean something like this?

        case '(':
                ret = handle_typecast(...);
                break;

And have;

#ifdef CONFIG_DEBUG_INFO_BTF
static int handle_typecast(...)
{
        [ do the real work here ]
}
#else
static int handle_typecast(...)
{
        trace_probe_log_err(ctx->offset, NOSUP_BTFARG);
        return -EOPNOTSUPP;
}
#endif

  ?

-- Steve

Reply via email to