All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@amacapital.net>
To: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
	Andy Lutomirski <luto@kernel.org>, X86 ML <x86@kernel.org>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	KVM list <kvm@vger.kernel.org>,
	Arjan van de Ven <arjan@linux.intel.com>,
	xen-devel <Xen-devel@lists.xen.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v5 4/9] x86/traps: Enable all exception handler callbacks early
Date: Sun, 3 Apr 2016 06:22:10 -0700	[thread overview]
Message-ID: <CALCETrU7LAGXtx-duRJuLYbMtYK=YXGxpV44jKcXWZuyTOQh+Q@mail.gmail.com> (raw)
In-Reply-To: <20160403080737.GA19007@pd.tnic>

On Sun, Apr 3, 2016 at 1:07 AM, Borislav Petkov <bp@alien8.de> wrote:
> On Sat, Apr 02, 2016 at 10:52:48PM +0200, Borislav Petkov wrote:
>> On Sat, Apr 02, 2016 at 01:16:07PM -0700, Andy Lutomirski wrote:
>> > I have no idea why it was explicitly unsupported, but I'm guessing it
>> > was just to avoid duplicating the code.  Early "ext" uaccess failures
>> > are certainly not going to work, but I don't think this is a problem
>> > -- there's no userspace before trap_init runs, so how exactly is an
>> > "ext" uaccess going to happen in the first place?
>> >
>> > In any event, if it did happen in older kernels, it would have
>> > immediately panicked due to that code.  At least with my code it just
>> > might manage to EFAULT correctly.
>>
>> Yeah, I was wondering what that early thing meant.
>>
>> Linus or tip guys probably remember what this whole deal with early
>> uaccess was about. I'll try to do some git archeology tomorrow.
>
> Yep, just as I suspected:
>
> 6a1ea279c210 ("x86, extable: Add early_fixup_exception()")
>
> Apparently, thread_info might not have been setup yet. I'm guessing the
> intention behind this no-uaccess-fixup-early is to not even attempt any
> fixup due to stuff *probably* not initialized yet and so the safer thing
> would be to panic instead.
>
> I'm wondering whether making it try to EFAULT correctly is the right
> thing to do... We're certainly more conservative if we panic and not
> allow some silently failed attempt at recovery which looks successful,
> to continue.
>
> hpa, thoughts?

I don't think this matters much.  There aren't many users of this
mechanism in the tree:

./arch/x86/kernel/signal.c:    get_user_try {
./arch/x86/kernel/signal.c:    put_user_try {
./arch/x86/kernel/signal.c:    put_user_try {
./arch/x86/kernel/signal.c:    put_user_try {
./arch/x86/kernel/signal.c:    put_user_try {
./arch/x86/kernel/signal_compat.c:    put_user_try {
./arch/x86/kernel/signal_compat.c:    get_user_try {
./arch/x86/kernel/vm86_32.c:    put_user_try {
./arch/x86/kernel/vm86_32.c:    get_user_try {
./arch/x86/ia32/ia32_signal.c:    get_user_try {
./arch/x86/ia32/ia32_signal.c:    put_user_try {
./arch/x86/ia32/ia32_signal.c:    put_user_try {
./arch/x86/ia32/ia32_signal.c:    put_user_try {
./arch/x86/include/asm/uaccess.h: * {get|put}_user_try and catch
./arch/x86/include/asm/uaccess.h: * get_user_try {
./arch/x86/include/asm/uaccess.h:#define get_user_try        uaccess_try
./arch/x86/include/asm/uaccess.h:#define put_user_try        uaccess_try

I don't see how we could get to that code in the first place without
current_thread_info() working.

If we can ever convince gcc to do jump labels properly for uaccess, it
would probably be better to just delete all that code.

--Andy

  parent reply	other threads:[~2016-04-03 13:22 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-02 14:01 [PATCH v5 0/9] Improve non-"safe" MSR access failure handling Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 1/9] x86/head: Pass a real pt_regs and trapnr to early_fixup_exception Andy Lutomirski
2016-04-02 14:01   ` Andy Lutomirski
2016-04-13 11:43   ` [tip:x86/asm] x86/head: Pass a real pt_regs and trapnr to early_fixup_exception() tip-bot for Andy Lutomirski
2016-04-13 11:43   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 2/9] x86/head: Move the early NMI fixup into C Andy Lutomirski
2016-04-02 14:01 ` Andy Lutomirski
2016-04-13 11:43   ` [tip:x86/asm] " tip-bot for Andy Lutomirski
2016-04-13 11:43   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 3/9] x86/head: Move early exception panic code into early_fixup_exception Andy Lutomirski
2016-04-02 14:01   ` Andy Lutomirski
2016-04-02 18:39   ` Borislav Petkov
2016-04-02 18:39   ` Borislav Petkov
2016-04-02 20:13     ` Andy Lutomirski
2016-04-02 20:47       ` Borislav Petkov
2016-04-02 20:47       ` Borislav Petkov
2016-04-02 20:58         ` Andy Lutomirski
2016-04-02 20:58         ` Andy Lutomirski
2016-04-04 11:52           ` Jan Kara
2016-04-04 11:52           ` Jan Kara
2016-04-04 12:46             ` Peter Zijlstra
2016-04-04 12:46             ` Peter Zijlstra
2016-04-04 15:32             ` Andy Lutomirski
2016-04-04 15:36               ` Arjan van de Ven
2016-04-04 15:36               ` Arjan van de Ven
2016-04-04 16:00               ` Peter Zijlstra
2016-04-04 16:00               ` Peter Zijlstra
2016-04-04 19:38                 ` Borislav Petkov
2016-04-04 19:38                 ` Borislav Petkov
2016-04-04 21:31                   ` Andy Lutomirski
2016-04-04 21:40                     ` Borislav Petkov
2016-04-04 21:40                     ` Borislav Petkov
2016-04-04 21:31                   ` Andy Lutomirski
2016-04-04 15:32             ` Andy Lutomirski
2016-04-02 20:13     ` Andy Lutomirski
2016-04-13 11:44   ` [tip:x86/asm] x86/head: Move early exception panic code into early_fixup_exception() tip-bot for Andy Lutomirski
2016-04-13 11:44   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 4/9] x86/traps: Enable all exception handler callbacks early Andy Lutomirski
2016-04-02 18:52   ` Borislav Petkov
2016-04-02 20:16     ` Andy Lutomirski
2016-04-02 20:52       ` Borislav Petkov
2016-04-02 20:52       ` Borislav Petkov
2016-04-03  8:07         ` Borislav Petkov
2016-04-03  8:07         ` Borislav Petkov
2016-04-03 13:22           ` Andy Lutomirski
2016-04-03 13:22           ` Andy Lutomirski [this message]
2016-04-03 13:51           ` Linus Torvalds
2016-04-03 13:51           ` Linus Torvalds
2016-04-03 13:55             ` Andy Lutomirski
2016-04-03 14:10               ` Borislav Petkov
2016-04-03 14:10               ` Borislav Petkov
2016-04-04 15:47                 ` Andy Lutomirski
2016-04-04 15:47                 ` Andy Lutomirski
2016-04-03 14:17               ` Linus Torvalds
2016-04-03 14:17               ` Linus Torvalds
2016-04-03 13:55             ` Andy Lutomirski
2016-04-02 20:16     ` Andy Lutomirski
2016-04-02 18:52   ` Borislav Petkov
2016-04-13 11:44   ` [tip:x86/asm] " tip-bot for Andy Lutomirski
2016-04-13 11:44   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 4/9] " Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 5/9] x86/paravirt: Add _safe to the read_msr and write_msr PV hooks Andy Lutomirski
2016-04-02 14:01   ` Andy Lutomirski
2016-04-03  8:41   ` Borislav Petkov
2016-04-03 13:23     ` Andy Lutomirski
2016-04-03 14:07       ` Borislav Petkov
2016-04-03 14:07       ` Borislav Petkov
2016-04-03 13:23     ` Andy Lutomirski
2016-04-03  8:41   ` Borislav Petkov
2016-04-13 11:44   ` [tip:x86/asm] x86/paravirt: Add _safe to the read_ms()r and write_msr() PV callbacks tip-bot for Andy Lutomirski
2016-04-13 11:44   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 6/9] x86/msr: Carry on after a non-"safe" MSR access fails Andy Lutomirski
2016-04-02 14:01 ` Andy Lutomirski
2016-04-13 11:45   ` [tip:x86/asm] " tip-bot for Andy Lutomirski
2016-04-13 11:45   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 7/9] x86/paravirt: Add paravirt_{read, write}_msr Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 7/9] x86/paravirt: Add paravirt_{read,write}_msr Andy Lutomirski
2016-04-04 16:33   ` [PATCH v5 7/9] x86/paravirt: Add paravirt_{read, write}_msr David Vrabel
2016-04-04 16:33   ` [Xen-devel] " David Vrabel
2016-04-04 16:40     ` Andy Lutomirski
2016-04-04 16:40     ` Andy Lutomirski
2016-04-13 11:45   ` [tip:x86/asm] x86/paravirt: Add paravirt_{read, write}_msr() tip-bot for Andy Lutomirski
2016-04-13 11:45   ` [tip:x86/asm] x86/paravirt: Add paravirt_{read,write}_msr() tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 8/9] x86/paravirt: Make "unsafe" MSR accesses unsafe even if PARAVIRT=y Andy Lutomirski
2016-04-02 14:01   ` Andy Lutomirski
2016-04-13 11:46   ` [tip:x86/asm] " tip-bot for Andy Lutomirski
2016-04-13 11:46   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 9/9] x86/msr: Set the return value to zero when native_rdmsr_safe fails Andy Lutomirski
2016-04-13 11:46   ` [tip:x86/asm] x86/msr: Set the return value to zero when native_rdmsr_safe() fails tip-bot for Andy Lutomirski
2016-04-13 11:46   ` tip-bot for Andy Lutomirski
2016-04-02 14:01 ` [PATCH v5 9/9] x86/msr: Set the return value to zero when native_rdmsr_safe fails Andy Lutomirski
2016-04-02 14:24 ` [PATCH v5 0/9] Improve non-"safe" MSR access failure handling Linus Torvalds
2016-04-02 15:13   ` Andy Lutomirski
2016-04-02 15:21     ` Linus Torvalds
2016-04-02 15:21     ` Linus Torvalds
2016-04-02 15:13   ` Andy Lutomirski
2016-04-02 14:24 ` Linus Torvalds
2016-04-04 16:23 ` Borislav Petkov
2016-04-04 16:23 ` Borislav Petkov
2016-04-05 15:38 ` Boris Ostrovsky
2016-04-05 15:38 ` [Xen-devel] " Boris Ostrovsky

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='CALCETrU7LAGXtx-duRJuLYbMtYK=YXGxpV44jKcXWZuyTOQh+Q@mail.gmail.com' \
    --to=luto@amacapital.net \
    --cc=Xen-devel@lists.xen.org \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@linux.intel.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=peterz@infradead.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.