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. > +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 ? Oleg.