On Sun, Apr 27, 2025 at 08:04:32PM +0200, Oleg Nesterov wrote:
> On 04/21, Jiri Olsa wrote:
> >
> > +struct uprobe_trampoline {
> > + struct hlist_node node;
> > + unsigned long vaddr;
> > + atomic64_t ref;
> > +};
>
> I don't really understand the point of uprobe_trampoline->ref...
>
> set_orig_insn/swbp_unoptimize paths don't call uprobe_trampoline_put().
> It is only called in unlikely case when swbp_optimize() fails, so perhaps
> we can kill this member and uprobe_trampoline_put() ? At least in the initial
> version.
right, we can remove that
>
> > +static void uprobe_trampoline_put(struct uprobe_trampoline *tramp)
> > +{
> > + if (tramp && atomic64_dec_and_test(&tramp->ref))
> > + destroy_uprobe_trampoline(tramp);
> > +}
>
> Why does it check tramp != NULL ?
I think some earlier version of the code could have called that with NULL,
will remove that
thanks,
jirka