Messages in this thread | | | Date | Fri, 11 Jan 2019 14:04:20 -0600 | From | Josh Poimboeuf <> | Subject | Re: [PATCH v3 0/6] Static calls |
| |
On Fri, Jan 11, 2019 at 11:03:30AM -0800, Linus Torvalds wrote: > The we'd change the end of poke_int3_handler() to do something like > this instead: > > void *newip = bp_int3_handler; > .. > if (new == magic_static_call_bp_int3_handler) { > if (regs->flags &X86_FLAGS_IF) { > newip = magic_static_call_bp_int3_handler_sti; > regs->flags &= ~X86_FLAGS_IF; > } > regs->ip = (unsigned long) newip; > return 1; > > AAND now we're *really* done. > > Does anybody see any issues in this?
This sounds ok, with a possible tweak: instead of the sti tricks, couldn't we just use synchronize_rcu_tasks() (as Jason suggested), to make sure the stubs are no longer used by a preempted task?
But really, to me, having to create and manage all those custom trampolines still feels a lot more complex than just making a gap on the stack.
-- Josh
| |