public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Andrew Lutomirski <luto@mit.edu>
Cc: Andi Kleen <andi@firstfloor.org>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	torvalds@linux-foundation.org, lueckintel@yahoo.com,
	kimwooyoung@gmail.com
Subject: Re: New vsyscall emulation breaks JITs
Date: Tue, 09 Aug 2011 11:57:58 -0500	[thread overview]
Message-ID: <4E416716.1040904@zytor.com> (raw)
In-Reply-To: <CAObL_7HL7SwCfXsD3dPesE4cU-nmoMCRVCP6u2Mn8efo7EG5Zg@mail.gmail.com>

On 08/09/2011 10:22 AM, Andrew Lutomirski wrote:
> 
> In any case, my patch fixes DynamoRIO but not pin.  Pin dies with:
> 
> [ 4988.945491] test_vsyscall[4587] emulated vsyscall from bogus
> address -- fix your code nr: 0 ip:7fdc3a5ce78f cs:33 sp:7fffc2339a88
> ax:ffffffffff600000 si:0 di:400d0a
> [ 4988.945497] test_vsyscall[4587] vsyscall fault (exploit attempt?)
> nr: 0 ip:7fdc3a5ce78f cs:33 sp:7fffc2339a88 ax:ffffffffff600000 si:0
> di:400d0a
> 
> and I don't know what's going on.  I suspect that the tracer assumes
> that int 0x40 continues execution at the next instruction.
> 
> x86 maintainers: I can think of a few choices:
> 
> 1. Stick a ret instruction in the vsyscall page.  Downside: now
> there's an unrestricted ret instruction in the vsyscall page.
> 

How much worse is a ret instruction over the INT instructions that
modifies very little of the register state and then rets?

> 3. Apply my patch and assume that the number of users that would
> benefit from a more complete fix is close to zero, since pin won't
> even try to run on 3.0 or 3.1 without gross hacks.  (Pin is prerelease
> software and apparently actively maintained by people who make it very
> hard for non-users to contact, but I'm trying.)

Since pin is going to have to be fixed anyway to run on 3.x, it seems
reasonable to me that they can just fix their vsyscall handling at the
same time.

Now, the multimodal patch seems reasonable, too.

I think to some extent there are no actually good solutions here, just
varying degrees of bad.  Being able to completely disable vsyscall
without having to recompile seems attractive, though.

	-hpa


  parent reply	other threads:[~2011-08-09 16:58 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-05 20:09 New vsyscall emulation breaks JITs Andi Kleen
2011-08-05 20:23 ` H. Peter Anvin
2011-08-05 20:26   ` Andi Kleen
2011-08-05 20:36     ` H. Peter Anvin
2011-08-05 20:47       ` Andi Kleen
2011-08-05 20:45   ` Andrew Lutomirski
2011-08-05 20:48     ` H. Peter Anvin
2011-08-05 20:52       ` Andi Kleen
2011-08-05 21:00         ` Andrew Lutomirski
2011-08-05 21:21           ` Andi Kleen
2011-08-05 21:26             ` Andrew Lutomirski
2011-08-05 22:06               ` H. Peter Anvin
2011-08-05 22:11                 ` Andrew Lutomirski
2011-08-06  0:20                   ` Andrew Lutomirski
2011-08-06  0:32                     ` H. Peter Anvin
2011-08-06  3:01                       ` [RFC] x86-64: Allow emulated vsyscalls from user addresses Andy Lutomirski
2011-08-06  3:04                       ` [RFC v2] " Andy Lutomirski
2011-08-06  6:45                         ` Ingo Molnar
2011-08-07 12:19                           ` Borislav Petkov
2011-08-07 12:58                             ` Andrew Lutomirski
2011-08-07 15:44                               ` Borislav Petkov
2011-08-07 16:14                                 ` Andrew Lutomirski
2011-08-11 13:16                         ` Pavel Machek
2011-08-11 13:27                           ` Andrew Lutomirski
2011-08-09 22:27                       ` New vsyscall emulation breaks JITs Suresh Siddha
2011-08-09 13:26             ` Andrew Lutomirski
2011-08-09 15:04               ` Andi Kleen
2011-08-09 15:22                 ` Andrew Lutomirski
2011-08-09 16:47                   ` [RFC] x86-64: Add vsyscall=emulate|native|none option Andy Lutomirski
2011-08-09 19:54                     ` Linus Torvalds
2011-08-09 16:57                   ` H. Peter Anvin [this message]
2011-08-09 17:05                     ` New vsyscall emulation breaks JITs Andrew Lutomirski
     [not found]                       ` <1312919938.17118.YahooMailNeo@web120010.mail.ne1.yahoo.com>
2011-08-09 20:59                         ` H. Peter Anvin
2011-08-09 21:04                         ` Andrew Lutomirski
2011-08-09 22:36                           ` Linus Torvalds
2011-08-10  0:56                             ` H. Peter Anvin
     [not found]                             ` <1312934493.45753.YahooMailNeo@web120015.mail.ne1.yahoo.com>
2011-08-10  1:49                               ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E416716.1040904@zytor.com \
    --to=hpa@zytor.com \
    --cc=andi@firstfloor.org \
    --cc=kimwooyoung@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lueckintel@yahoo.com \
    --cc=luto@mit.edu \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox