Lines Matching refs:address

174 static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address)
176 unsigned index = pgd_index(address);
193 p4d = p4d_offset(pgd, address);
194 p4d_k = p4d_offset(pgd_k, address);
198 pud = pud_offset(p4d, address);
199 pud_k = pud_offset(p4d_k, address);
203 pmd = pmd_offset(pud, address);
204 pmd_k = pmd_offset(pud_k, address);
231 static noinline int vmalloc_fault(unsigned long address)
238 if (!(address >= VMALLOC_START && address < VMALLOC_END))
249 pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
256 pte_k = pte_offset_kernel(pmd_k, address);
293 static void dump_pagetable(unsigned long address)
296 pgd_t *pgd = &base[pgd_index(address)];
310 p4d = p4d_offset(pgd, address);
311 pud = pud_offset(p4d, address);
312 pmd = pmd_offset(pud, address);
325 pte = pte_offset_kernel(pmd, address);
349 static void dump_pagetable(unsigned long address)
352 pgd_t *pgd = base + pgd_index(address);
366 p4d = p4d_offset(pgd, address);
374 pud = pud_offset(p4d, address);
382 pmd = pmd_offset(pud, address);
390 pte = pte_offset_kernel(pmd, address);
418 static int is_errata93(struct pt_regs *regs, unsigned long address)
428 if (address != regs->ip)
431 if ((address >> 32) != 0)
434 address |= 0xffffffffUL << 32;
435 if ((address >= (u64)_stext && address <= (u64)_etext) ||
436 (address >= MODULES_VADDR && address <= MODULES_END)) {
438 regs->ip = address;
453 static int is_errata100(struct pt_regs *regs, unsigned long address)
456 if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) && (address >> 32))
464 unsigned long address)
468 idt_is_f00f_address(address)) {
492 if (copy_from_kernel_nofault(&desc, (void *)(gdt->address + offset),
508 show_fault_oops(struct pt_regs *regs, unsigned long error_code, unsigned long address)
519 pgd += pgd_index(address);
521 pte = lookup_address_in_pgd(pgd, address, &level);
533 if (address < PAGE_SIZE && !user_mode(regs))
534 pr_alert("BUG: kernel NULL pointer dereference, address: %px\n",
535 (void *)address);
537 pr_alert("BUG: unable to handle page fault for address: %px\n",
538 (void *)address);
572 idt.address, idt.size, gdt.address, gdt.size);
581 dump_pagetable(address);
586 unsigned long address)
596 printk(KERN_ALERT "%s: Corrupted page table at address %lx\n",
597 tsk->comm, address);
598 dump_pagetable(address);
606 static void sanitize_error_code(unsigned long address,
618 if (address >= TASK_SIZE_MAX)
622 static void set_signal_archinfo(unsigned long address,
629 tsk->thread.cr2 = address;
634 unsigned long address)
656 if (is_vmalloc_addr((void *)address) &&
657 get_stack_guard_info((void *)address, &info)) {
671 , [arg1] "r" (regs), [arg2] "r" (address), [arg3] "r" (&info));
683 efi_crash_gracefully_on_page_fault(address);
687 kfence_handle_page_fault(address, error_code & X86_PF_WRITE, regs))
697 show_fault_oops(regs, error_code, address);
707 printk(KERN_DEFAULT "CR2: %016lx\n", address);
714 unsigned long address, int signal, int si_code,
720 if (fixup_exception(regs, X86_TRAP_PF, error_code, address)) {
736 sanitize_error_code(address, &error_code);
738 set_signal_archinfo(address, error_code);
741 force_sig_pkuerr((void __user *)address, pkey);
744 force_sig_fault(signal, si_code, (void __user *)address);
758 if (is_prefetch(regs, error_code, address))
761 page_fault_oops(regs, error_code, address);
770 unsigned long address, struct task_struct *tsk)
783 loglvl, tsk->comm, task_pid_nr(tsk), address,
803 unsigned long address, u32 pkey, int si_code)
808 kernelmode_fixup_or_oops(regs, error_code, address,
815 page_fault_oops(regs, error_code, address);
829 if (is_prefetch(regs, error_code, address))
832 if (is_errata100(regs, address))
835 sanitize_error_code(address, &error_code);
837 if (fixup_vdso_exception(regs, X86_TRAP_PF, error_code, address))
841 show_signal_msg(regs, error_code, address, tsk);
843 set_signal_archinfo(address, error_code);
846 force_sig_pkuerr((void __user *)address, pkey);
848 force_sig_fault(SIGSEGV, si_code, (void __user *)address);
855 unsigned long address)
857 __bad_area_nosemaphore(regs, error_code, address, 0, SEGV_MAPERR);
862 unsigned long address, u32 pkey, int si_code)
871 __bad_area_nosemaphore(regs, error_code, address, pkey, si_code);
893 unsigned long address, struct vm_area_struct *vma)
923 __bad_area(regs, error_code, address, pkey, SEGV_PKUERR);
925 __bad_area(regs, error_code, address, 0, SEGV_ACCERR);
930 do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
935 kernelmode_fixup_or_oops(regs, error_code, address,
941 if (is_prefetch(regs, error_code, address))
944 sanitize_error_code(address, &error_code);
946 if (fixup_vdso_exception(regs, X86_TRAP_PF, error_code, address))
949 set_signal_archinfo(address, error_code);
958 tsk->comm, tsk->pid, address);
963 force_sig_mceerr(BUS_MCEERR_AR, (void __user *)address, lsb);
967 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
1003 spurious_kernel_fault(unsigned long error_code, unsigned long address)
1025 pgd = init_mm.pgd + pgd_index(address);
1029 p4d = p4d_offset(pgd, address);
1036 pud = pud_offset(p4d, address);
1043 pmd = pmd_offset(pud, address);
1050 pte = pte_offset_kernel(pmd, address);
1138 bool fault_in_kernel_space(unsigned long address)
1141 * On 64-bit systems, the vsyscall page is at an address above
1143 * address space.
1145 if (IS_ENABLED(CONFIG_X86_64) && is_vsyscall_vaddr(address))
1148 return address >= TASK_SIZE_MAX;
1152 * Called for all faults where 'address' is part of the kernel address
1158 unsigned long address)
1162 * have no user pages in the kernel portion of the address
1193 if (vmalloc_fault(address) >= 0)
1198 if (is_f00f_bug(regs, hw_error_code, address))
1202 if (spurious_kernel_fault(hw_error_code, address))
1217 bad_area_nosemaphore(regs, hw_error_code, address);
1222 * Handle faults in the user portion of the address space. Nothing in here
1232 unsigned long address)
1247 * corrupts RIP such that it looks like a user address,
1251 if (is_errata93(regs, address))
1254 page_fault_oops(regs, error_code, address);
1267 pgtable_bad(regs, error_code, address);
1271 * pages in the user address space. The odd case here is WRUSS,
1283 page_fault_oops(regs, error_code, address);
1292 bad_area_nosemaphore(regs, error_code, address);
1311 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
1329 * vsyscall page is at a high address (>PAGE_OFFSET), but is
1330 * considered to be part of the user address space.
1338 if (is_vsyscall_vaddr(address)) {
1339 if (emulate_vsyscall(error_code, regs, address))
1347 vma = lock_vma_under_rcu(mm, address);
1355 fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs);
1368 kernelmode_fixup_or_oops(regs, error_code, address,
1376 vma = lock_mm_and_find_vma(mm, address, regs);
1378 bad_area_nosemaphore(regs, error_code, address);
1387 bad_area_access_error(regs, error_code, address, vma);
1404 fault = handle_mm_fault(vma, address, flags, regs);
1412 kernelmode_fixup_or_oops(regs, error_code, address,
1438 kernelmode_fixup_or_oops(regs, error_code, address,
1446 kernelmode_fixup_or_oops(regs, error_code, address,
1461 do_sigbus(regs, error_code, address, fault);
1463 bad_area_nosemaphore(regs, error_code, address);
1472 unsigned long address)
1478 trace_page_fault_user(address, regs, error_code);
1480 trace_page_fault_kernel(address, regs, error_code);
1485 unsigned long address)
1487 trace_page_fault_entries(regs, error_code, address);
1489 if (unlikely(kmmio_fault(regs, address)))
1492 /* Was the fault on kernel-controlled part of the address space? */
1493 if (unlikely(fault_in_kernel_space(address))) {
1494 do_kern_addr_fault(regs, error_code, address);
1496 do_user_addr_fault(regs, error_code, address);
1498 * User address page fault handling might have reenabled
1510 unsigned long address = read_cr2();
1536 if (kvm_handle_async_pf(regs, (u32)address))
1542 * be invoked because a kernel fault on a user space address might
1552 handle_page_fault(regs, error_code, address);