Lines Matching refs:regs
51 __bad_area_nosemaphore(struct pt_regs *regs, unsigned long address, int si_code)
58 if (!user_mode(regs))
61 _exception(SIGSEGV, regs, si_code, address);
66 static noinline int bad_area_nosemaphore(struct pt_regs *regs, unsigned long address)
68 return __bad_area_nosemaphore(regs, address, SEGV_MAPERR);
71 static int __bad_area(struct pt_regs *regs, unsigned long address, int si_code)
81 return __bad_area_nosemaphore(regs, address, si_code);
84 static noinline int bad_area(struct pt_regs *regs, unsigned long address)
86 return __bad_area(regs, address, SEGV_MAPERR);
90 static noinline int bad_access_pkey(struct pt_regs *regs, unsigned long address,
122 if (!user_mode(regs))
125 _exception_pkey(regs, address, pkey);
131 static noinline int bad_access(struct pt_regs *regs, unsigned long address)
133 return __bad_area(regs, address, SEGV_ACCERR);
136 static int do_sigbus(struct pt_regs *regs, unsigned long address,
139 if (!user_mode(regs))
164 static int mm_fault_error(struct pt_regs *regs, unsigned long addr,
171 if (fatal_signal_pending(current) && !user_mode(regs))
180 if (!user_mode(regs))
186 return do_sigbus(regs, addr, fault);
188 return bad_area_nosemaphore(regs, addr);
196 static bool bad_kernel_fault(struct pt_regs *regs, unsigned long error_code,
199 int is_exec = TRAP(regs) == 0x400;
212 !search_exception_tables(regs->nip)) {
223 if (!search_exception_tables(regs->nip))
228 if (bad_kuap_fault(regs, address, is_write))
389 static int __do_page_fault(struct pt_regs *regs, unsigned long address,
395 int is_exec = TRAP(regs) == 0x400;
396 int is_user = user_mode(regs);
399 bool kprobe_fault = kprobe_page_fault(regs, 11);
401 if (unlikely(debugger_fault_handler(regs) || kprobe_fault))
406 _exception(SIGBUS, regs, BUS_OBJERR, address);
420 if (unlikely(!is_user && bad_kernel_fault(regs, error_code, address, is_write)))
433 return bad_area_nosemaphore(regs, address);
437 if (!arch_irq_disabled_regs(regs))
440 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
470 if (!is_user && !search_exception_tables(regs->nip))
471 return bad_area_nosemaphore(regs, address);
486 return bad_area(regs, address);
490 return bad_area(regs, address);
493 return bad_area(regs, address);
499 return bad_access_pkey(regs, address, vma);
503 return bad_access(regs, address);
510 fault = handle_mm_fault(vma, address, flags, regs);
514 if (fault_signal_pending(fault, regs))
515 return user_mode(regs) ? 0 : SIGBUS;
531 return mm_fault_error(regs, address, fault);
543 int do_page_fault(struct pt_regs *regs, unsigned long address,
547 int rc = __do_page_fault(regs, address, error_code);
558 void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
561 int is_write = page_fault_is_write(regs->dsisr);
564 if ((entry = search_exception_tables(regs->nip)) != NULL) {
565 regs->nip = extable_fixup(entry);
571 switch (TRAP(regs)) {
576 regs->dar < PAGE_SIZE ? "Kernel NULL pointer dereference" :
578 is_write ? "write" : "read", regs->dar);
583 regs->nip < PAGE_SIZE ? " (NULL pointer?)\n" : "\n");
587 regs->dar);
591 regs->dar);
595 regs->nip);
600 die("Kernel access of bad area", regs, sig);