public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Lackner <sebastian@fds-team.de>
To: Andy Lutomirski <luto@amacapital.net>,
	Thomas Gleixner <tglx@linutronix.de>, X86 ML <x86@kernel.org>,
	Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>
Cc: Anish Bhatt <anish@chelsio.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Chuck Ebbert <cebbert.lkml@gmail.com>,
	stable@kernel.org
Subject: Re: [PATCH 1/2] x86_64,entry: Filter RFLAGS.NT on entry from userspace
Date: Tue, 30 Sep 2014 23:39:17 +0200	[thread overview]
Message-ID: <542B2305.9060805@fds-team.de> (raw)
In-Reply-To: <c4b7904ef2ddd3dec27400d18bcd00badb4dcedf.1412105369.git.luto@amacapital.net>

On 30.09.2014 21:40, Andy Lutomirski wrote:
> what would happen.  Apparently Wine sometimes does this (!), and, if
> an IRET return happens, Wine will segfault.
> 
> I think that Wine should be fixed to stop setting NT when a syscall
> happens, but handling NT more gracefully is still nice.
> 

Just to give some more background about this issue: Wine has no influence
if the NT flag is set or not - as Wine doesn't trace each individual opcode,
there is no chance to know, if a Windows program messes up the EFLAGS. This
happens in closed source Windows applications, so its not really Wines fault.

I think the current approach should be fine, but if other people prefer one of
the solutions without additional overhead on syscall entry:

At least for Wine it would also be absolutely fine, when the application would
just get a proper signal (if adding the retry IRET is too complicated). I've
attached the url to an additional example program, which shows that currently
the signal handler is unable to process such a fault, and a proof-of-concept
patch to clear the NT flags at least for the signal handler. Such a patch
doesn't fix the potential issues with EFI though.

Example program:
http://ix.io/ezl

Proof-of-concept patch:
http://ix.io/ezm

Regards,
Sebastian


  reply	other threads:[~2014-09-30 21:41 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-30 19:40 [PATCH 0/2] x86_64,entry: Clear NT on entry and speed up switch_to Andy Lutomirski
2014-09-30 19:40 ` [PATCH 1/2] x86_64,entry: Filter RFLAGS.NT on entry from userspace Andy Lutomirski
2014-09-30 21:39   ` Sebastian Lackner [this message]
2014-09-30 21:45     ` Andy Lutomirski
2014-09-30 22:23       ` Sebastian Lackner
2014-09-30 22:27       ` Thomas Gleixner
2014-09-30 22:33         ` Andy Lutomirski
2014-09-30 23:21           ` Thomas Gleixner
2014-10-01 17:50             ` H. Peter Anvin
2014-10-01 17:53               ` H. Peter Anvin
2014-09-30 22:42         ` H. Peter Anvin
2014-10-01  0:27   ` Chuck Ebbert
2014-10-01  0:38     ` Andy Lutomirski
2014-09-30 19:40 ` [PATCH 2/2] x86_64: Don't save flags on context switch Andy Lutomirski
2014-09-30 22:21 ` [PATCH 0/2] x86_64,entry: Clear NT on entry and speed up switch_to Thomas Gleixner
2014-09-30 22:30   ` Andy Lutomirski

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=542B2305.9060805@fds-team.de \
    --to=sebastian@fds-team.de \
    --cc=anish@chelsio.com \
    --cc=cebbert.lkml@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@redhat.com \
    --cc=stable@kernel.org \
    --cc=tglx@linutronix.de \
    --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