From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753438AbdKXJQE (ORCPT ); Fri, 24 Nov 2017 04:16:04 -0500 Received: from mail-wm0-f66.google.com ([74.125.82.66]:43714 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753197AbdKXJPu (ORCPT ); Fri, 24 Nov 2017 04:15:50 -0500 X-Google-Smtp-Source: AGs4zMZGjHgqkuq0ofRka8Z/YFqtoqiplVLbdQttlt6RPb8Rx6WtVf+UJLXDMv/eOwhLRj5UHS/U6g== From: Ingo Molnar To: linux-kernel@vger.kernel.org Cc: Dave Hansen , Andy Lutomirski , Thomas Gleixner , "H . Peter Anvin" , Peter Zijlstra , Borislav Petkov , Linus Torvalds Subject: [PATCH 31/43] x86/mm/kaiser: Map entry stack variable Date: Fri, 24 Nov 2017 10:14:36 +0100 Message-Id: <20171124091448.7649-32-mingo@kernel.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171124091448.7649-1-mingo@kernel.org> References: <20171124091448.7649-1-mingo@kernel.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dave Hansen There are times where the kernel is entered but there is no safe stack, like at SYSCALL entry. To obtain a safe stack, we have to clobber %rsp and store the clobbered value in 'rsp_scratch'. Map this to userspace to allow us to do this stack switch before the CR3 switch. Signed-off-by: Dave Hansen Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Brian Gerst Cc: Daniel Gruss Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Hugh Dickins Cc: Josh Poimboeuf Cc: Kees Cook Cc: Linus Torvalds Cc: Michael Schwarz Cc: Moritz Lipp Cc: Peter Zijlstra Cc: Richard Fellner Cc: Thomas Gleixner Cc: linux-mm@kvack.org Link: http://lkml.kernel.org/r/20171123003459.C0FF167A@viggo.jf.intel.com Signed-off-by: Ingo Molnar --- arch/x86/kernel/process_64.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index bafe65b08697..9a0220aa2bf9 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c @@ -59,7 +59,7 @@ #include #endif -__visible DEFINE_PER_CPU(unsigned long, rsp_scratch); +__visible DEFINE_PER_CPU_USER_MAPPED(unsigned long, rsp_scratch); /* Prints also some state that isn't saved in the pt_regs */ void __show_regs(struct pt_regs *regs, int all) -- 2.14.1