All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Andy Lutomirski <luto@kernel.org>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>, X86 ML <x86@kernel.org>,
	Borislav Petkov <bpetkov@suse.de>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Brian Gerst <brgerst@gmail.com>,
	Dave Hansen <dave.hansen@intel.com>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: WARNING: can't dereference registers at ffffc90004dfff60 for ip error_entry+0x7d/0xd0 (Re: [PATCH v2 00/18] Entry stack switching)
Date: Wed, 22 Nov 2017 16:56:18 +0100	[thread overview]
Message-ID: <20171122155618.lvbp5elt4zvapsnl@gmail.com> (raw)
In-Reply-To: <CALCETrU-aOe9k=NKG3h_SXfB2Zwr_Sxj6moLhEMhLqgM2V2qTg@mail.gmail.com>


* Andy Lutomirski <luto@kernel.org> wrote:

> >  .Lerror_entry_from_usermode_after_swapgs:
> >         /* Put us onto the real thread stack. */
> > -       leaq    8(%rsp), %rdi                   /* pt_regs pointer */
> > -       movq    (%rsp), %r12
> > +       popq    %r12                            /* function return address */
> > +       leaq    (%rsp), %rdi                    /* pt_regs pointer */
> >         call    sync_regs
> >         movq    %rax, %rsp                      /* switch stack */
> >         ENCODE_FRAME_POINTER
> 
> Ah, I see -- SAVE_C_REGS contains an UNWIND_HINT_REGS hint.  I had
> thought I needed to fix it differently.
> 
> Ingo, if you want to apply this, I attached it.  I'll fold it in next
> time I resend the whole  series.

Ok.

Also please fold back the minor fixes below - spelling fix plus ugly line breaks 
elimination.

Thanks,

	Ingo

=======>

 arch/x86/include/asm/fixmap.h | 2 +-
 arch/x86/kernel/cpu/common.c  | 7 ++-----
 arch/x86/kernel/dumpstack.c   | 6 ++----
 arch/x86/kernel/traps.c       | 3 +--
 4 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/arch/x86/include/asm/fixmap.h b/arch/x86/include/asm/fixmap.h
index a40820216f66..8562356213cd 100644
--- a/arch/x86/include/asm/fixmap.h
+++ b/arch/x86/include/asm/fixmap.h
@@ -54,7 +54,7 @@ struct cpu_entry_area
 	char gdt[PAGE_SIZE];
 
 	/*
-	 * The gdt is just below cpu_tss and thus serves (on x86_64) as a
+	 * The GDT is just below cpu_tss and thus serves (on x86_64) as a
 	 * a read-only guard page for the SYSENTER stack at the bottom
 	 * of the TSS region.
 	 */
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 3c0b69a6792b..6b949e6ea0f9 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -490,14 +490,12 @@ void load_percpu_segment(int cpu)
 	load_stack_canary_segment();
 }
 
-static void set_percpu_fixmap_pages(int fixmap_index, void *ptr, int pages,
-				    pgprot_t prot)
+static void set_percpu_fixmap_pages(int fixmap_index, void *ptr, int pages, pgprot_t prot)
 {
 	int i;
 
 	for (i = 0; i < pages; i++)
-		__set_fixmap(fixmap_index - i,
-			     per_cpu_ptr_to_phys(ptr + i*PAGE_SIZE), prot);
+		__set_fixmap(fixmap_index - i, per_cpu_ptr_to_phys(ptr + i*PAGE_SIZE), prot);
 }
 
 #ifdef CONFIG_X86_32
@@ -546,7 +544,6 @@ static inline void setup_cpu_entry_area(int cpu)
 	__set_fixmap(get_cpu_entry_area_index(cpu, gdt), get_cpu_gdt_paddr(cpu), gdt_prot);
 
 	/*
-	 *
 	 * The Intel SDM says (Volume 3, 7.2.1):
 	 *
 	 *  Avoid placing a page boundary in the part of the TSS that the
diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
index def64a91bd68..e9e70bce52ec 100644
--- a/arch/x86/kernel/dumpstack.c
+++ b/arch/x86/kernel/dumpstack.c
@@ -109,10 +109,8 @@ void show_trace_log_lvl(struct task_struct *task, struct pt_regs *regs,
 			 * See if the next page up is valid to that we can
 			 * generate some kind of backtrace if this happens.
 			 */
-			stack = (unsigned long *)
-				PAGE_ALIGN((unsigned long)stack);
-			if (get_stack_info(stack, task, &stack_info,
-					   &visit_mask))
+			stack = (unsigned long *)PAGE_ALIGN((unsigned long)stack);
+			if (get_stack_info(stack, task, &stack_info, &visit_mask))
 				break;
 		}
 
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 03f2bc1cbb30..cbc4272bb9dd 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -359,8 +359,7 @@ dotraplinkage void do_double_fault(struct pt_regs *regs, long error_code)
 		regs->cs == __KERNEL_CS &&
 		regs->ip == (unsigned long)native_irq_return_iret)
 	{
-		struct pt_regs *normal_regs =
-			(struct pt_regs *)this_cpu_read(cpu_tss.x86_tss.sp0) - 1;
+		struct pt_regs *normal_regs = (struct pt_regs *)this_cpu_read(cpu_tss.x86_tss.sp0) - 1;
 
 		/* Fake a #GP(0) from userspace. */
 		memmove(&normal_regs->ip, (void *)regs->sp, 5*8);

  reply	other threads:[~2017-11-22 15:56 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-22  4:43 [PATCH v2 00/18] Entry stack switching Andy Lutomirski
2017-11-22  4:43 ` [PATCH v2 01/18] x86/entry/64: Fix entry_SYSCALL_64_after_hwframe IRQ tracing Andy Lutomirski
2017-11-22  5:35   ` Ingo Molnar
2017-11-22  7:45   ` [tip:x86/urgent] x86/entry/64: Fix entry_SYSCALL_64_after_hwframe() " tip-bot for Andy Lutomirski
2017-11-22  4:43 ` [PATCH v2 02/18] x86/asm/64: Allocate and enable the SYSENTER stack Andy Lutomirski
2017-11-22  4:43 ` [PATCH v2 03/18] x86/dumpstack: Add get_stack_info() support for " Andy Lutomirski
2017-11-22 12:10   ` Borislav Petkov
2017-11-22  4:43 ` [PATCH v2 04/18] x86/gdt: Put per-cpu GDT remaps in ascending order Andy Lutomirski
2017-11-22 11:05   ` Borislav Petkov
2017-11-22 15:26     ` Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 05/18] x86/fixmap: Generalize the GDT fixmap mechanism Andy Lutomirski
2017-11-22 15:33   ` Borislav Petkov
2017-11-22 17:16     ` Andy Lutomirski
2017-11-22 17:32       ` Borislav Petkov
2017-11-23 15:24         ` Andy Lutomirski
2017-11-23 19:24   ` Thomas Gleixner
2017-11-22  4:44 ` [PATCH v2 06/18] x86/kasan/64: Teach KASAN about the cpu_entry_area Andy Lutomirski
2017-11-22  6:19   ` Ingo Molnar
2017-11-22  9:05   ` Andrey Ryabinin
2017-11-22 15:22     ` Andy Lutomirski
2017-11-23 10:08       ` Andrey Ryabinin
2017-11-23 15:22         ` Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 07/18] x86/asm: Fix assumptions that the HW TSS is at the beginning of cpu_tss Andy Lutomirski
2017-11-22 19:06   ` Borislav Petkov
2017-11-22  4:44 ` [PATCH v2 08/18] x86/dumpstack: Handle stack overflow on all stacks Andy Lutomirski
2017-11-23 11:19   ` Borislav Petkov
2017-11-22  4:44 ` [PATCH v2 09/18] x86/asm: Move SYSENTER_stack to the beginning of struct tss_struct Andy Lutomirski
2017-11-23 12:00   ` Borislav Petkov
2017-11-23 13:16   ` Denys Vlasenko
2017-11-23 15:02     ` Andy Lutomirski
2017-11-23 19:30   ` Thomas Gleixner
2017-11-22  4:44 ` [PATCH v2 10/18] x86/asm: Remap the TSS into the cpu entry area Andy Lutomirski
2017-11-23 19:32   ` Thomas Gleixner
2017-11-23 19:55   ` Borislav Petkov
2017-11-23 20:15     ` Andy Lutomirski
2017-11-23 20:37       ` Borislav Petkov
2017-11-24  2:40         ` Andy Lutomirski
2017-11-24  4:17           ` Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 11/18] x86/asm/64: Separate cpu_current_top_of_stack from TSS.sp0 Andy Lutomirski
2017-11-23 19:34   ` Thomas Gleixner
2017-11-22  4:44 ` [PATCH v2 12/18] x86/espfix/64: Stop assuming that pt_regs is on the entry stack Andy Lutomirski
2017-11-23 19:36   ` Thomas Gleixner
2017-11-22  4:44 ` [PATCH v2 13/18] x86/asm/64: Use a percpu trampoline stack for IDT entries Andy Lutomirski
2017-11-23 23:44   ` Thomas Gleixner
2017-11-24  4:14     ` Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 14/18] x86/asm/64: Return to userspace from the trampoline stack Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 15/18] x86/entry/64: Create a percpu SYSCALL entry trampoline Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 16/18] x86/irq: Remove an old outdated comment about context tracking races Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 17/18] x86/irq/64: In the stack overflow warning, print the offending IP Andy Lutomirski
2017-11-22  4:44 ` [PATCH v2 18/18] x86/entry/64: Move the IST stacks into cpu_entry_area Andy Lutomirski
2017-11-22  6:22 ` [PATCH v2 00/18] Entry stack switching Ingo Molnar
2017-11-22  6:36   ` Ingo Molnar
2017-11-22 16:23   ` Andy Lutomirski
2017-11-23  6:21     ` Ingo Molnar
2017-11-23  6:44       ` Ingo Molnar
2017-11-23  6:58         ` Ingo Molnar
2017-11-23 15:29           ` Andy Lutomirski
2017-11-23 16:41             ` Thomas Gleixner
2017-11-22  7:39 ` WARNING: can't dereference registers at ffffc90004dfff60 for ip error_entry+0x7d/0xd0 (Re: [PATCH v2 00/18] Entry stack switching) Ingo Molnar
2017-11-22  7:43   ` Ingo Molnar
2017-11-22 13:55   ` Josh Poimboeuf
2017-11-22 15:19     ` Andy Lutomirski
2017-11-22 15:56       ` Ingo Molnar [this message]
2017-11-22 16:35         ` 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=20171122155618.lvbp5elt4zvapsnl@gmail.com \
    --to=mingo@kernel.org \
    --cc=bpetkov@suse.de \
    --cc=brgerst@gmail.com \
    --cc=dave.hansen@intel.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luto@kernel.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.