Messages in this thread | | | Date | Thu, 10 Apr 2014 14:53:35 +0200 | From | Denys Vlasenko <> | Subject | Re: [RFC PATCH v2 4/6] uprobes/x86: Emulate rip-relative call's |
| |
On 04/09/2014 09:44 PM, Oleg Nesterov wrote: > +static void ttt_clear_displacement(struct arch_uprobe *auprobe, struct insn *insn)
Branch instruction's offset isn't called "displacement" on x86.
How about ttt_clear_branch_offset?
> +{ > + /* > + * Turn this insn into "call 1f; 1:", this is what we will execute > + * out-of-line if ->emulate() fails. > + * > + * In the likely case this will lead to arch_uprobe_abort_xol(), but > + * see the comment in ->emulate(). So we need to ensure that the new > + * ->ip can't fall into non-canonical area and trigger #GP. > + * > + * We could turn it into (say) "pushf", but then we would need to > + * divorce ->insn[] and ->ixol[]. We need to preserve the 1st byte > + * of ->insn[] for set_orig_insn(). > + */ > + memset(auprobe->insn + insn_offset_immediate(insn), > + 0, insn->immediate.nbytes); > +}
| |