[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110821144352.GJ2203@ZenIV.linux.org.uk>
Date: Sun, 21 Aug 2011 15:43:52 +0100
From: Al Viro <viro@...IV.linux.org.uk>
To: Andrew Lutomirski <luto@....edu>
Cc: Linus Torvalds <torvalds@...ux-foundation.org>,
"H. Peter Anvin" <hpa@...or.com>, mingo@...hat.com,
Richard Weinberger <richard@....at>,
user-mode-linux-devel@...ts.sourceforge.net,
linux-kernel@...r.kernel.org
Subject: Re: SYSCALL, ptrace and syscall restart breakages (Re: [RFC] weird
crap with vdso on uml/i386)
On Sun, Aug 21, 2011 at 07:24:35AM -0400, Andrew Lutomirski wrote:
> I don't see the point of all this hackery at all. sysenter/sysexit
> indeed screws up some registers, but we can return on the iret path in
> the case of restart.
We *do* return on iret path in case of restart, TYVM.
> So why do we lie to ptrace (and iret!) at all? Why not just fill in
> pt_regs with the registers as they were (at least the
> non-clobbered-by-sysenter ones), set the actual C parameters correctly
> to contain the six arguments (in rdi, rsi, etc.), do the syscall, and
> return back to userspace without any funny business? Is there some
> ABI reason that, once we've started lying to tracers, we have to keep
> doing so?
We do not lie to ptrace and iret. At all. We do just what you have
described. And fuck up when restart returns us to the SYSCALL / SYSENTER
instruction again, which expects the different calling conventions,
so the values arranged in registers in the way int 0x80 would expect
do us no good.
--
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