All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Borislav Petkov <bp@alien8.de>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>, X86 ML <x86@kernel.org>,
	Andy Lutomirski <luto@amacapital.net>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 8/9] x86/dumpstack: Save first regs set for the executive summary
Date: Fri, 16 Mar 2018 10:22:29 -0700	[thread overview]
Message-ID: <CA+55aFwmi38uJyir_e_TTDObBGg55WsTB_0AqcVHzgU=+Fy=ag@mail.gmail.com> (raw)
In-Reply-To: <20180316114849.GD5852@pd.tnic>

On Fri, Mar 16, 2018 at 4:48 AM, Borislav Petkov <bp@alien8.de> wrote:
> On Thu, Mar 15, 2018 at 02:01:32PM -0500, Josh Poimboeuf wrote:
>> no_context() has the following line, right before it calls oops_end():
>>
>>       /* Executive summary in case the body of the oops scrolled away */
>>       printk(KERN_DEFAULT "CR2: %016lx\n", address);
>>
>> I think that line can now be removed, since the executive summary
>> __show_regs() will include CR2.
>
> Good idea. Done.

NOOOO!

Guys, %cr2 CAN AND DOES CHANGE!

The reason we do that

        printk(KERN_DEFAULT "CR2: %016lx\n", address);

is because WE ARE NOT PRINTING OUT THE CURRENT CR2 REGISTER!

This is really damn important.

The "address" register contains the CR2 value as it was read *very*
early in the page fault case, before we enabled interrupts, and before
we did various random things that can cause further page faults and
change CR2!

So the executive summary that does __show_regs() may end up showing
something completely different than the actual faulting address,
because we might have taken a vmalloc-space exception in the meantime,
for example.

Do *NOT* get rid of that thing.

You're better off getting rid of the CR2 line from __show_regs(),
because it can be dangerously confusing. It's not actually part of the
saved register state at all, it's something entirely different. It's
like showing the current eflags rather than the eflags saved on the
faulting stack.

                     Linus

  parent reply	other threads:[~2018-03-16 17:22 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-15 15:44 [PATCH 0/9] x86/dumpstack: Cleanups and user opcode bytes Code: section, v2 Borislav Petkov
2018-03-15 15:44 ` [PATCH 1/9] x86/dumstack: Remove code_bytes Borislav Petkov
2018-03-15 18:12   ` Josh Poimboeuf
2018-03-15 15:44 ` [PATCH 2/9] x86/dumpstack: Unexport oops_begin() Borislav Petkov
2018-03-15 15:44 ` [PATCH 3/9] x86/dumpstack: Carve out Code: dumping into a function Borislav Petkov
2018-03-15 15:44 ` [PATCH 4/9] x86/dumpstack: Improve opcodes dumping in the Code: section Borislav Petkov
2018-03-15 18:10   ` Josh Poimboeuf
2018-03-15 18:16     ` Borislav Petkov
2018-03-15 19:06       ` Josh Poimboeuf
2018-03-16 11:57       ` David Laight
2018-03-15 18:19   ` Josh Poimboeuf
2018-03-15 18:23   ` Josh Poimboeuf
2018-03-15 15:44 ` [PATCH 5/9] x86/dumpstack: Add loglevel argument to show_opcodes() Borislav Petkov
2018-03-15 15:44 ` [PATCH 6/9] x86/fault: Dump user opcode bytes on fatal faults Borislav Petkov
2018-03-15 15:44 ` [PATCH 7/9] x86/dumpstack: Add a show_ip() function Borislav Petkov
2018-03-15 18:34   ` Josh Poimboeuf
2018-03-15 18:55     ` Borislav Petkov
2018-03-15 15:44 ` [PATCH 8/9] x86/dumpstack: Save first regs set for the executive summary Borislav Petkov
2018-03-15 19:01   ` Josh Poimboeuf
2018-03-16 11:48     ` Borislav Petkov
2018-03-16 12:01       ` Josh Poimboeuf
2018-03-16 12:11         ` Borislav Petkov
2018-03-16 13:16           ` Josh Poimboeuf
2018-03-16 13:44             ` Borislav Petkov
2018-03-16 17:22       ` Linus Torvalds [this message]
2018-03-16 17:40         ` Josh Poimboeuf
2018-03-16 17:45         ` Borislav Petkov
2018-03-16 18:38           ` Josh Poimboeuf
2018-03-15 15:44 ` [PATCH 9/9] x86/dumpstack: Explain the reasoning for the prologue and buffer size Borislav Petkov
2018-03-15 18:07   ` Josh Poimboeuf
2018-03-15 18:17     ` Borislav Petkov
2018-03-15 17:51 ` [PATCH 0/9] x86/dumpstack: Cleanups and user opcode bytes Code: section, v2 Linus Torvalds
2018-04-17 14:40   ` Borislav Petkov
2018-04-17 20:16     ` Josh Poimboeuf
2018-04-17 21:06       ` Borislav Petkov
2018-04-18 13:26         ` Josh Poimboeuf
2018-04-17 16:11 [PATCH 0/9] x86/dumpstack: Cleanups and user opcode bytes Code: section, v3 Borislav Petkov
2018-04-17 16:11 ` [PATCH 8/9] x86/dumpstack: Save first regs set for the executive summary Borislav Petkov

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='CA+55aFwmi38uJyir_e_TTDObBGg55WsTB_0AqcVHzgU=+Fy=ag@mail.gmail.com' \
    --to=torvalds@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=peterz@infradead.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.