Lines Matching refs:addr
24 static void die_kernel_fault(const char *msg, unsigned long addr, in die_kernel_fault() argument
30 addr); in die_kernel_fault()
37 static inline void no_context(struct pt_regs *regs, unsigned long addr) in no_context() argument
49 if (addr < PAGE_SIZE) in no_context()
52 if (kfence_handle_page_fault(addr, regs->cause == EXC_STORE_PAGE_FAULT, regs)) in no_context()
58 die_kernel_fault(msg, addr, regs); in no_context()
61 static inline void mm_fault_error(struct pt_regs *regs, unsigned long addr, vm_fault_t fault) in mm_fault_error() argument
69 no_context(regs, addr); in mm_fault_error()
77 no_context(regs, addr); in mm_fault_error()
80 do_trap(regs, SIGBUS, BUS_ADRERR, addr); in mm_fault_error()
86 …atic inline void bad_area(struct pt_regs *regs, struct mm_struct *mm, int code, unsigned long addr) in bad_area() argument
95 do_trap(regs, SIGSEGV, code, addr); in bad_area()
99 no_context(regs, addr); in bad_area()
102 static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long addr) in vmalloc_fault() argument
114 return do_trap(regs, SIGSEGV, code, addr); in vmalloc_fault()
124 index = pgd_index(addr); in vmalloc_fault()
130 no_context(regs, addr); in vmalloc_fault()
135 p4d = p4d_offset(pgd, addr); in vmalloc_fault()
136 p4d_k = p4d_offset(pgd_k, addr); in vmalloc_fault()
138 no_context(regs, addr); in vmalloc_fault()
142 pud = pud_offset(p4d, addr); in vmalloc_fault()
143 pud_k = pud_offset(p4d_k, addr); in vmalloc_fault()
145 no_context(regs, addr); in vmalloc_fault()
153 pmd = pmd_offset(pud, addr); in vmalloc_fault()
154 pmd_k = pmd_offset(pud_k, addr); in vmalloc_fault()
156 no_context(regs, addr); in vmalloc_fault()
167 pte_k = pte_offset_kernel(pmd_k, addr); in vmalloc_fault()
169 no_context(regs, addr); in vmalloc_fault()
179 local_flush_tlb_page(addr); in vmalloc_fault()
215 unsigned long addr, cause; in do_page_fault() local
221 addr = regs->badaddr; in do_page_fault()
238 if (unlikely((addr >= VMALLOC_START) && (addr <= VMALLOC_END))) { in do_page_fault()
239 vmalloc_fault(regs, code, addr); in do_page_fault()
251 if (unlikely(addr >= MODULES_VADDR && addr < MODULES_END)) { in do_page_fault()
252 vmalloc_fault(regs, code, addr); in do_page_fault()
266 no_context(regs, addr); in do_page_fault()
273 if (!user_mode(regs) && addr < TASK_SIZE && in do_page_fault()
276 addr, regs); in do_page_fault()
278 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, addr); in do_page_fault()
286 vma = find_vma(mm, addr); in do_page_fault()
289 bad_area(regs, mm, code, addr); in do_page_fault()
292 if (likely(vma->vm_start <= addr)) in do_page_fault()
296 bad_area(regs, mm, code, addr); in do_page_fault()
299 if (unlikely(expand_stack(vma, addr))) { in do_page_fault()
301 bad_area(regs, mm, code, addr); in do_page_fault()
314 bad_area(regs, mm, code, addr); in do_page_fault()
323 fault = handle_mm_fault(vma, addr, flags, regs); in do_page_fault()
348 mm_fault_error(regs, addr, fault); in do_page_fault()