Messages in this thread | | | Date | Fri, 11 Apr 2014 12:03:16 +0900 | From | Masami Hiramatsu <> | Subject | Re: Re: [RFC PATCH 4/6] uprobes/x86: Emulate rip-relative call's |
| |
(2014/04/10 23:20), Denys Vlasenko wrote: > On 04/10/2014 03:57 PM, Masami Hiramatsu wrote: >> (2014/04/10 22:41), Denys Vlasenko wrote: >>> On 04/09/2014 05:43 PM, Oleg Nesterov wrote: >>>> On 04/08, Jim Keniston wrote: >>>>> >>>>> On Sun, 2014-04-06 at 22:16 +0200, Oleg Nesterov wrote: >>>>>> 0xe8. Anything else? >>>>> >>>>> No, I think e8 is the only call instruction uprobes will see. >>>> >>>> Good. >>> >>> There is this monstrosity, "16-bit override for branches" in 64-mode: >>> >>> 66 e8 nn nn callw <offset16> >>> >>> Nobody sane uses it because it truncates instruction pointer. >> >> No problem, insn.c can handle that too. :) > > That's good that we decode it correctly, > but there is more to it. > > Call insn pushes return address to stack. > > This "mutant 16-bit call", what should it push? > Full RIP? > Truncated 16-bit IP? If yes, by how much does it > advance RSP? +2? +8? > Hmm. Does it affect RSP or only its 16-bit lower part?
At least, if we can trust Intel SDM, it says that depends on the operand-size (insn->opnd_bytes) and stack segment descriptor. Please check the SDM vol.1 6.2.2 Stack Alignment and vol.2a, 3.2 Instructions (A-M), CALL—Call Procedure. But we'd better check it on x86-32.
Thank you!
> > It's a can of worms! :)
-- Masami HIRAMATSU Software Platform Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |