On 05/26, Jiri Olsa wrote: > > + * Note that unoptimization deliberately keeps the call opcode and > displacement > + * in bytes 5..9. Those bytes become operands of the restored 10-byte NOP. > + * > + * Since there is only a single target uprobe-trampoline for the given nop10 > + * instruction address, the CALL instruction will not be changed across > + * unoptimization/optimization cycles. > + * Therefore, any task that is preempted at the CALL instruction is > guaranteed > + * to observe that CALL and not anything else.
Understand... and I guess synchronize_rcu_tasks() is too heavy. But this means that unregister/unapply will never discard the COW'ed anonymous page with optimized up; __uprobe_write() -> orig_page_is_identical() will never be true... Plus this means that we can never "gc" the unused tramp vma's, but this is minor. OK. This is not critical, and other than that I don't see any problems in yout patch. (but I am sure this is only because I don't understand this code/patch enough ;) So, FWIW Reviewed-by: Oleg Nesterov <[email protected]>
