Lines Matching full:address
150 static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address) in vmalloc_sync_one() argument
152 unsigned index = pgd_index(address); in vmalloc_sync_one()
169 p4d = p4d_offset(pgd, address); in vmalloc_sync_one()
170 p4d_k = p4d_offset(pgd_k, address); in vmalloc_sync_one()
174 pud = pud_offset(p4d, address); in vmalloc_sync_one()
175 pud_k = pud_offset(p4d_k, address); in vmalloc_sync_one()
179 pmd = pmd_offset(pud, address); in vmalloc_sync_one()
180 pmd_k = pmd_offset(pud_k, address); in vmalloc_sync_one()
207 static noinline int vmalloc_fault(unsigned long address) in vmalloc_fault() argument
214 if (!(address >= VMALLOC_START && address < VMALLOC_END)) in vmalloc_fault()
225 pmd_k = vmalloc_sync_one(__va(pgd_paddr), address); in vmalloc_fault()
232 pte_k = pte_offset_kernel(pmd_k, address); in vmalloc_fault()
268 check_v8086_mode(struct pt_regs *regs, unsigned long address, in check_v8086_mode() argument
277 bit = (address - 0xA0000) >> PAGE_SHIFT; in check_v8086_mode()
288 static void dump_pagetable(unsigned long address) in dump_pagetable() argument
291 pgd_t *pgd = &base[pgd_index(address)]; in dump_pagetable()
305 p4d = p4d_offset(pgd, address); in dump_pagetable()
306 pud = pud_offset(p4d, address); in dump_pagetable()
307 pmd = pmd_offset(pud, address); in dump_pagetable()
320 pte = pte_offset_kernel(pmd, address); in dump_pagetable()
341 check_v8086_mode(struct pt_regs *regs, unsigned long address, in check_v8086_mode() argument
353 static void dump_pagetable(unsigned long address) in dump_pagetable() argument
356 pgd_t *pgd = base + pgd_index(address); in dump_pagetable()
370 p4d = p4d_offset(pgd, address); in dump_pagetable()
378 pud = pud_offset(p4d, address); in dump_pagetable()
386 pmd = pmd_offset(pud, address); in dump_pagetable()
394 pte = pte_offset_kernel(pmd, address); in dump_pagetable()
422 static int is_errata93(struct pt_regs *regs, unsigned long address) in is_errata93() argument
429 if (address != regs->ip) in is_errata93()
432 if ((address >> 32) != 0) in is_errata93()
435 address |= 0xffffffffUL << 32; in is_errata93()
436 if ((address >= (u64)_stext && address <= (u64)_etext) || in is_errata93()
437 (address >= MODULES_VADDR && address <= MODULES_END)) { in is_errata93()
439 regs->ip = address; in is_errata93()
454 static int is_errata100(struct pt_regs *regs, unsigned long address) in is_errata100() argument
457 if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) && (address >> 32)) in is_errata100()
464 static int is_f00f_bug(struct pt_regs *regs, unsigned long address) in is_f00f_bug() argument
467 if (boot_cpu_has_bug(X86_BUG_F00F) && idt_is_f00f_address(address)) { in is_f00f_bug()
491 if (copy_from_kernel_nofault(&desc, (void *)(gdt->address + offset), in show_ldttss()
507 show_fault_oops(struct pt_regs *regs, unsigned long error_code, unsigned long address) in show_fault_oops() argument
518 pgd += pgd_index(address); in show_fault_oops()
520 pte = lookup_address_in_pgd(pgd, address, &level); in show_fault_oops()
532 if (address < PAGE_SIZE && !user_mode(regs)) in show_fault_oops()
533 pr_alert("BUG: kernel NULL pointer dereference, address: %px\n", in show_fault_oops()
534 (void *)address); in show_fault_oops()
536 pr_alert("BUG: unable to handle page fault for address: %px\n", in show_fault_oops()
537 (void *)address); in show_fault_oops()
571 idt.address, idt.size, gdt.address, gdt.size); in show_fault_oops()
580 dump_pagetable(address); in show_fault_oops()
585 unsigned long address) in pgtable_bad() argument
595 printk(KERN_ALERT "%s: Corrupted page table at address %lx\n", in pgtable_bad()
596 tsk->comm, address); in pgtable_bad()
597 dump_pagetable(address); in pgtable_bad()
605 static void set_signal_archinfo(unsigned long address, in set_signal_archinfo() argument
619 if (address >= TASK_SIZE_MAX) in set_signal_archinfo()
624 tsk->thread.cr2 = address; in set_signal_archinfo()
629 unsigned long address, int signal, int si_code) in no_context() argument
645 if (fixup_exception(regs, X86_TRAP_PF, error_code, address)) { in no_context()
661 set_signal_archinfo(address, error_code); in no_context()
664 force_sig_fault(signal, si_code, (void __user *)address); in no_context()
679 if (is_vmalloc_addr((void *)address) && in no_context()
680 (((unsigned long)tsk->stack - 1 - address < PAGE_SIZE) || in no_context()
681 address - ((unsigned long)tsk->stack + THREAD_SIZE) < PAGE_SIZE)) { in no_context()
698 "S" (regs), "d" (address), in no_context()
715 if (is_prefetch(regs, error_code, address)) in no_context()
718 if (is_errata93(regs, address)) in no_context()
726 efi_recover_from_page_fault(address); in no_context()
735 show_fault_oops(regs, error_code, address); in no_context()
745 printk(KERN_DEFAULT "CR2: %016lx\n", address); in no_context()
756 unsigned long address, struct task_struct *tsk) in show_signal_msg() argument
767 loglvl, tsk->comm, task_pid_nr(tsk), address, in show_signal_msg()
779 * of the address space that has user-accessible permissions.
788 unsigned long address, u32 pkey, int si_code) in __bad_area_nosemaphore() argument
803 if (is_prefetch(regs, error_code, address)) in __bad_area_nosemaphore()
806 if (is_errata100(regs, address)) in __bad_area_nosemaphore()
814 if (address >= TASK_SIZE_MAX) in __bad_area_nosemaphore()
818 show_signal_msg(regs, error_code, address, tsk); in __bad_area_nosemaphore()
820 set_signal_archinfo(address, error_code); in __bad_area_nosemaphore()
823 force_sig_pkuerr((void __user *)address, pkey); in __bad_area_nosemaphore()
825 force_sig_fault(SIGSEGV, si_code, (void __user *)address); in __bad_area_nosemaphore()
832 if (is_f00f_bug(regs, address)) in __bad_area_nosemaphore()
835 no_context(regs, error_code, address, SIGSEGV, si_code); in __bad_area_nosemaphore()
840 unsigned long address) in bad_area_nosemaphore() argument
842 __bad_area_nosemaphore(regs, error_code, address, 0, SEGV_MAPERR); in bad_area_nosemaphore()
847 unsigned long address, u32 pkey, int si_code) in __bad_area() argument
856 __bad_area_nosemaphore(regs, error_code, address, pkey, si_code); in __bad_area()
860 bad_area(struct pt_regs *regs, unsigned long error_code, unsigned long address) in bad_area() argument
862 __bad_area(regs, error_code, address, 0, SEGV_MAPERR); in bad_area()
884 unsigned long address, struct vm_area_struct *vma) in bad_area_access_error() argument
914 __bad_area(regs, error_code, address, pkey, SEGV_PKUERR); in bad_area_access_error()
916 __bad_area(regs, error_code, address, 0, SEGV_ACCERR); in bad_area_access_error()
921 do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address, in do_sigbus() argument
926 no_context(regs, error_code, address, SIGBUS, BUS_ADRERR); in do_sigbus()
931 if (is_prefetch(regs, error_code, address)) in do_sigbus()
934 set_signal_archinfo(address, error_code); in do_sigbus()
943 tsk->comm, tsk->pid, address); in do_sigbus()
948 force_sig_mceerr(BUS_MCEERR_AR, (void __user *)address, lsb); in do_sigbus()
952 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); in do_sigbus()
957 unsigned long address, vm_fault_t fault) in mm_fault_error() argument
960 no_context(regs, error_code, address, 0, 0); in mm_fault_error()
967 no_context(regs, error_code, address, in mm_fault_error()
981 do_sigbus(regs, error_code, address, fault); in mm_fault_error()
983 bad_area_nosemaphore(regs, error_code, address); in mm_fault_error()
1022 spurious_kernel_fault(unsigned long error_code, unsigned long address) in spurious_kernel_fault() argument
1044 pgd = init_mm.pgd + pgd_index(address); in spurious_kernel_fault()
1048 p4d = p4d_offset(pgd, address); in spurious_kernel_fault()
1055 pud = pud_offset(p4d, address); in spurious_kernel_fault()
1062 pmd = pmd_offset(pud, address); in spurious_kernel_fault()
1069 pte = pte_offset_kernel(pmd, address); in spurious_kernel_fault()
1131 bool fault_in_kernel_space(unsigned long address) in fault_in_kernel_space() argument
1134 * On 64-bit systems, the vsyscall page is at an address above in fault_in_kernel_space()
1136 * address space. in fault_in_kernel_space()
1138 if (IS_ENABLED(CONFIG_X86_64) && is_vsyscall_vaddr(address)) in fault_in_kernel_space()
1141 return address >= TASK_SIZE_MAX; in fault_in_kernel_space()
1145 * Called for all faults where 'address' is part of the kernel address
1151 unsigned long address) in do_kern_addr_fault() argument
1155 * have no user pages in the kernel portion of the address in do_kern_addr_fault()
1186 if (vmalloc_fault(address) >= 0) in do_kern_addr_fault()
1192 if (spurious_kernel_fault(hw_error_code, address)) in do_kern_addr_fault()
1207 bad_area_nosemaphore(regs, hw_error_code, address); in do_kern_addr_fault()
1211 /* Handle faults in the user portion of the address space */
1215 unsigned long address) in do_user_addr_fault() argument
1235 pgtable_bad(regs, hw_error_code, address); in do_user_addr_fault()
1239 * pages in the user address space. The odd case here is WRUSS, in do_user_addr_fault()
1248 bad_area_nosemaphore(regs, hw_error_code, address); in do_user_addr_fault()
1257 bad_area_nosemaphore(regs, hw_error_code, address); in do_user_addr_fault()
1276 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); in do_user_addr_fault()
1286 * vsyscall page is at a high address (>PAGE_OFFSET), but is in do_user_addr_fault()
1287 * considered to be part of the user address space. in do_user_addr_fault()
1295 if (is_vsyscall_vaddr(address)) { in do_user_addr_fault()
1296 if (emulate_vsyscall(hw_error_code, regs, address)) in do_user_addr_fault()
1302 * Kernel-mode access to the user address space should only occur in do_user_addr_fault()
1306 * to validate the fault against the address space. in do_user_addr_fault()
1319 bad_area_nosemaphore(regs, hw_error_code, address); in do_user_addr_fault()
1333 vma = find_vma(mm, address); in do_user_addr_fault()
1335 bad_area(regs, hw_error_code, address); in do_user_addr_fault()
1338 if (likely(vma->vm_start <= address)) in do_user_addr_fault()
1341 bad_area(regs, hw_error_code, address); in do_user_addr_fault()
1344 if (unlikely(expand_stack(vma, address))) { in do_user_addr_fault()
1345 bad_area(regs, hw_error_code, address); in do_user_addr_fault()
1355 bad_area_access_error(regs, hw_error_code, address, vma); in do_user_addr_fault()
1372 fault = handle_mm_fault(vma, address, flags, regs); in do_user_addr_fault()
1377 no_context(regs, hw_error_code, address, SIGBUS, in do_user_addr_fault()
1395 mm_fault_error(regs, hw_error_code, address, fault); in do_user_addr_fault()
1399 check_v8086_mode(regs, address, tsk); in do_user_addr_fault()
1405 unsigned long address) in trace_page_fault_entries() argument
1411 trace_page_fault_user(address, regs, error_code); in trace_page_fault_entries()
1413 trace_page_fault_kernel(address, regs, error_code); in trace_page_fault_entries()
1418 unsigned long address) in handle_page_fault() argument
1420 trace_page_fault_entries(regs, error_code, address); in handle_page_fault()
1422 if (unlikely(kmmio_fault(regs, address))) in handle_page_fault()
1425 /* Was the fault on kernel-controlled part of the address space? */ in handle_page_fault()
1426 if (unlikely(fault_in_kernel_space(address))) { in handle_page_fault()
1427 do_kern_addr_fault(regs, error_code, address); in handle_page_fault()
1429 do_user_addr_fault(regs, error_code, address); in handle_page_fault()
1431 * User address page fault handling might have reenabled in handle_page_fault()
1443 unsigned long address = read_cr2(); in DEFINE_IDTENTRY_RAW_ERRORCODE() local
1469 if (kvm_handle_async_pf(regs, (u32)address)) in DEFINE_IDTENTRY_RAW_ERRORCODE()
1475 * be invoked because a kernel fault on a user space address might in DEFINE_IDTENTRY_RAW_ERRORCODE()
1485 handle_page_fault(regs, error_code, address); in DEFINE_IDTENTRY_RAW_ERRORCODE()