14 #include <linux/kernel.h>
18 #include <linux/perf_event.h>
21 #include <asm/mmu_context.h>
22 #include <asm/tlbflush.h>
23 #include <asm/traps.h>
29 if (kprobes_built_in() && !
user_mode(regs)) {
40 force_sig_info_fault(
int si_signo,
int si_code,
unsigned long address,
48 info.si_addr = (
void __user *)address;
90 printk(
", *pud=%0*Lx", (
u32)(
sizeof(*pud) * 2),
103 printk(
", *pmd=%0*Lx", (
u32)(
sizeof(*pmd) * 2),
119 printk(
", *pte=%0*Lx", (
u32)(
sizeof(*pte) * 2),
167 #ifdef CONFIG_SH_STORE_QUEUES
168 #define __FAULT_ADDR_LIMIT P3_ADDR_MAX
170 #define __FAULT_ADDR_LIMIT VMALLOC_END
176 static noinline int vmalloc_fault(
unsigned long address)
194 pmd_k = vmalloc_sync_one(pgd_k, address);
206 show_fault_oops(
struct pt_regs *regs,
unsigned long address)
226 unsigned long address)
241 show_fault_oops(regs, address);
243 die(
"Oops", regs, error_code);
249 __bad_area_nosemaphore(
struct pt_regs *regs,
unsigned long error_code,
250 unsigned long address,
int si_code)
261 force_sig_info_fault(
SIGSEGV, si_code, address, tsk);
266 no_context(regs, error_code, address);
270 bad_area_nosemaphore(
struct pt_regs *regs,
unsigned long error_code,
271 unsigned long address)
273 __bad_area_nosemaphore(regs, error_code, address,
SEGV_MAPERR);
277 __bad_area(
struct pt_regs *regs,
unsigned long error_code,
278 unsigned long address,
int si_code)
288 __bad_area_nosemaphore(regs, error_code, address, si_code);
292 bad_area(
struct pt_regs *regs,
unsigned long error_code,
unsigned long address)
294 __bad_area(regs, error_code, address,
SEGV_MAPERR);
298 bad_area_access_error(
struct pt_regs *regs,
unsigned long error_code,
299 unsigned long address)
301 __bad_area(regs, error_code, address,
SEGV_ACCERR);
304 static void out_of_memory(
void)
316 do_sigbus(
struct pt_regs *regs,
unsigned long error_code,
unsigned long address)
325 no_context(regs, error_code, address);
331 mm_fault_error(
struct pt_regs *regs,
unsigned long error_code,
332 unsigned long address,
unsigned int fault)
338 if (fatal_signal_pending(
current)) {
339 if (!(fault & VM_FAULT_RETRY))
342 no_context(regs, error_code, address);
346 if (!(fault & VM_FAULT_ERROR))
349 if (fault & VM_FAULT_OOM) {
353 no_context(regs, error_code, address);
359 if (fault & VM_FAULT_SIGBUS)
360 do_sigbus(regs, error_code, address);
368 static inline int access_error(
int error_code,
struct vm_area_struct *vma)
378 if (
unlikely((error_code & FAULT_CODE_ITLB) &&
389 static int fault_in_kernel_space(
unsigned long address)
400 unsigned long error_code,
401 unsigned long address)
409 unsigned int flags = (FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE |
410 (write ? FAULT_FLAG_WRITE : 0));
425 if (
unlikely(fault_in_kernel_space(address))) {
426 if (vmalloc_fault(address) >= 0)
428 if (notify_page_fault(regs, vec))
431 bad_area_nosemaphore(regs, error_code, address);
435 if (
unlikely(notify_page_fault(regs, vec)))
449 bad_area_nosemaphore(regs, error_code, address);
458 bad_area(regs, error_code, address);
464 bad_area(regs, error_code, address);
468 bad_area(regs, error_code, address);
477 if (
unlikely(access_error(error_code, vma))) {
478 bad_area_access_error(regs, error_code, address);
482 set_thread_fault_code(error_code);
491 if (
unlikely(fault & (VM_FAULT_RETRY | VM_FAULT_ERROR)))
492 if (mm_fault_error(regs, error_code, address, fault))
495 if (flags & FAULT_FLAG_ALLOW_RETRY) {
496 if (fault & VM_FAULT_MAJOR) {
505 if (fault & VM_FAULT_RETRY) {
506 flags &= ~FAULT_FLAG_ALLOW_RETRY;
507 flags |= FAULT_FLAG_TRIED;