From: Dave Hansen <dave.hansen@linux.intel.com>
To: linux-kernel@vger.kernel.org
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
sean.j.christopherson@intel.com, peterz@infradead.org,
tglx@linutronix.de, x86@kernel.org, luto@kernel.org
Subject: [RFC][PATCH 3/8] x86/mm: break out user address space handling
Date: Fri, 07 Sep 2018 12:48:57 -0700 [thread overview]
Message-ID: <20180907194857.93621ACE@viggo.jf.intel.com> (raw)
In-Reply-To: <20180907194852.3C351B82@viggo.jf.intel.com>
From: Dave Hansen <dave.hansen@linux.intel.com>
The last patch broke out kernel address space handing into its own
helper. Now, do the same for user address space handling.
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>
Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86@kernel.org
Cc: Andy Lutomirski <luto@kernel.org>
---
b/arch/x86/mm/fault.c | 47 ++++++++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 19 deletions(-)
diff -puN arch/x86/mm/fault.c~pkeys-fault-warnings-01 arch/x86/mm/fault.c
--- a/arch/x86/mm/fault.c~pkeys-fault-warnings-01 2018-09-07 11:21:46.663751901 -0700
+++ b/arch/x86/mm/fault.c 2018-09-07 11:21:46.667751901 -0700
@@ -1203,6 +1203,7 @@ static inline bool smap_violation(int er
return true;
}
+/* Handle faults in the kernel portion of the address space */
static void
do_kern_addr_space_fault(struct pt_regs *regs, unsigned long hw_error_code,
unsigned long address)
@@ -1252,14 +1253,11 @@ do_kern_addr_space_fault(struct pt_regs
}
NOKPROBE_SYMBOL(do_kern_addr_space_fault);
-/*
- * This routine handles page faults. It determines the address,
- * and the problem, and then passes it off to one of the appropriate
- * routines.
- */
-static noinline void
-__do_page_fault(struct pt_regs *regs, unsigned long hw_error_code,
- unsigned long address)
+/* Handle faults in the user portion of the address space */
+static inline
+void do_user_addr_space_fault(struct pt_regs *regs,
+ unsigned long hw_error_code,
+ unsigned long address)
{
unsigned long sw_error_code;
struct vm_area_struct *vma;
@@ -1272,17 +1270,6 @@ __do_page_fault(struct pt_regs *regs, un
tsk = current;
mm = tsk->mm;
- prefetchw(&mm->mmap_sem);
-
- if (unlikely(kmmio_fault(regs, address)))
- return;
-
- /* Was the fault on kernel-controlled part of the address space? */
- if (unlikely(fault_in_kernel_space(address))) {
- do_kern_addr_space_fault(regs, hw_error_code, address);
- return;
- }
-
/* kprobes don't want to hook the spurious faults: */
if (unlikely(kprobes_fault(regs)))
return;
@@ -1486,6 +1473,28 @@ good_area:
check_v8086_mode(regs, address, tsk);
}
+NOKPROBE_SYMBOL(do_user_addr_space_fault);
+
+/*
+ * This routine handles page faults. It determines the address,
+ * and the problem, and then passes it off to one of the appropriate
+ * routines.
+ */
+static noinline void
+__do_page_fault(struct pt_regs *regs, unsigned long hw_error_code,
+ unsigned long address)
+{
+ prefetchw(¤t->mm->mmap_sem);
+
+ if (unlikely(kmmio_fault(regs, address)))
+ return;
+
+ /* Was the fault on kernel-controlled part of the address space? */
+ if (unlikely(fault_in_kernel_space(address)))
+ do_kern_addr_space_fault(regs, hw_error_code, address);
+ else
+ do_user_addr_space_fault(regs, hw_error_code, address);
+}
NOKPROBE_SYMBOL(__do_page_fault);
static nokprobe_inline void
_
next prev parent reply other threads:[~2018-09-07 19:52 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-07 19:48 [RFC][PATCH 0/8] x86/mm: page fault handling cleanups Dave Hansen
2018-09-07 19:48 ` [RFC][PATCH 1/8] x86/mm: clarify hardware vs. software "error_code" Dave Hansen
2018-09-07 22:48 ` Andy Lutomirski
2018-09-10 20:07 ` Dave Hansen
2018-09-10 21:17 ` Andy Lutomirski
2018-09-07 19:48 ` [RFC][PATCH 2/8] x86/mm: break out kernel address space handling Dave Hansen
2018-09-07 21:06 ` Sean Christopherson
2018-09-07 21:51 ` Dave Hansen
2018-09-07 22:21 ` Andy Lutomirski
2018-09-07 22:37 ` Dave Hansen
2018-09-07 19:48 ` Dave Hansen [this message]
2018-09-08 9:38 ` [RFC][PATCH 3/8] x86/mm: break out user " Peter Zijlstra
2018-09-10 20:20 ` Dave Hansen
2018-09-07 19:48 ` [RFC][PATCH 4/8] x86/mm: add clarifying comments for user addr space Dave Hansen
2018-09-07 19:49 ` [RFC][PATCH 5/8] x86/mm: fix exception table comments Dave Hansen
2018-09-07 21:04 ` Sean Christopherson
2018-09-07 21:51 ` Dave Hansen
2018-09-10 20:43 ` Sean Christopherson
2018-09-08 0:37 ` Jann Horn
2018-09-07 19:49 ` [RFC][PATCH 6/8] x86/mm: add vsyscall address helper Dave Hansen
2018-09-08 0:46 ` Jann Horn
2018-09-07 19:49 ` [RFC][PATCH 7/8] x86/mm/vsyscall: consider vsyscall page part of user address space Dave Hansen
2018-09-07 22:58 ` Andy Lutomirski
2018-09-08 1:16 ` Jann Horn
2018-09-07 19:49 ` [RFC][PATCH 8/8] x86/mm: remove spurious fault pkey check Dave Hansen
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=20180907194857.93621ACE@viggo.jf.intel.com \
--to=dave.hansen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=peterz@infradead.org \
--cc=sean.j.christopherson@intel.com \
--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 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.