[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120915150120.GA20608@redhat.com>
Date:	Sat, 15 Sep 2012 17:01:20 +0200
From:	Oleg Nesterov <oleg@...hat.com>
To:	Ananth N Mavinakayanahalli <ananth@...ibm.com>
Cc:	Ingo Molnar <mingo@...e.hu>, Peter Zijlstra <peterz@...radead.org>,
	Srikar Dronamraju <srikar@...ux.vnet.ibm.com>,
	Anton Arapov <anton@...hat.com>,
	Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH 3/5] uprobes: Fix UPROBE_SKIP_SSTEP checks in
	handle_swbp()
On 09/15, Ananth N Mavinakayanahalli wrote:
>
> On Fri, Sep 14, 2012 at 07:15:57PM +0200, Oleg Nesterov wrote:
> >
> > Note: probably we should rename "skip" to "emulate" and I think
> > that "clear UPROBE_SKIP_SSTEP" should be moved to arch_can_skip.
>
> Agree. emulate is more accurate in this situation since, especially on
> powerpc, we do emulate most instructions.
Yes. And even on x86, perhaps we should emulate at least pushf to
not expose TF set by uprobes.
Off-topic question... I am trying to understand if arch_uprobe_skip_sstep()
is correct on x86.
It doesn't update regs->ip. Probably this is fine, at least this is
fine if it finds "nop" eventually. But I can't undestand what
"0x66* { 0x90 | 0x0f 0x1f | 0x0f 0x19 | 0x87 0xc0 }" means.
OK, 0x66 and 0x90 are clear. But, say, 0x0f 0x1f ?
I compiled this program
	int main(void)
	{
		asm volatile (".word 0x1f0f");
		return 0;
	}
and objdump reports:
	000000000040047c <main>:
	  40047c:       0f 1f 31                nopl   (%rcx)
	  40047f:       c0 c3 90                rol    $0x90,%bl
Could you explain?
Oleg.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Powered by blists - more mailing lists
 
