Lines Matching refs:address

157 static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address)
159 unsigned index = pgd_index(address);
176 p4d = p4d_offset(pgd, address);
177 p4d_k = p4d_offset(pgd_k, address);
181 pud = pud_offset(p4d, address);
182 pud_k = pud_offset(p4d_k, address);
186 pmd = pmd_offset(pud, address);
187 pmd_k = pmd_offset(pud_k, address);
214 static noinline int vmalloc_fault(unsigned long address)
221 if (!(address >= VMALLOC_START && address < VMALLOC_END))
232 pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
239 pte_k = pte_offset_kernel(pmd_k, address);
275 check_v8086_mode(struct pt_regs *regs, unsigned long address,
284 bit = (address - 0xA0000) >> PAGE_SHIFT;
295 static void dump_pagetable(unsigned long address)
298 pgd_t *pgd = &base[pgd_index(address)];
312 p4d = p4d_offset(pgd, address);
313 pud = pud_offset(p4d, address);
314 pmd = pmd_offset(pud, address);
327 pte = pte_offset_kernel(pmd, address);
348 check_v8086_mode(struct pt_regs *regs, unsigned long address,
360 static void dump_pagetable(unsigned long address)
363 pgd_t *pgd = base + pgd_index(address);
377 p4d = p4d_offset(pgd, address);
385 pud = pud_offset(p4d, address);
393 pmd = pmd_offset(pud, address);
401 pte = pte_offset_kernel(pmd, address);
429 static int is_errata93(struct pt_regs *regs, unsigned long address)
436 if (address != regs->ip)
439 if ((address >> 32) != 0)
442 address |= 0xffffffffUL << 32;
443 if ((address >= (u64)_stext && address <= (u64)_etext) ||
444 (address >= MODULES_VADDR && address <= MODULES_END)) {
446 regs->ip = address;
461 static int is_errata100(struct pt_regs *regs, unsigned long address)
464 if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) && (address >> 32))
471 static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
474 if (boot_cpu_has_bug(X86_BUG_F00F) && idt_is_f00f_address(address)) {
498 if (copy_from_kernel_nofault(&desc, (void *)(gdt->address + offset),
514 show_fault_oops(struct pt_regs *regs, unsigned long error_code, unsigned long address)
525 pgd += pgd_index(address);
527 pte = lookup_address_in_pgd(pgd, address, &level);
539 if (address < PAGE_SIZE && !user_mode(regs))
540 pr_alert("BUG: kernel NULL pointer dereference, address: %px\n",
541 (void *)address);
543 pr_alert("BUG: unable to handle page fault for address: %px\n",
544 (void *)address);
578 idt.address, idt.size, gdt.address, gdt.size);
587 dump_pagetable(address);
592 unsigned long address)
602 printk(KERN_ALERT "%s: Corrupted page table at address %lx\n",
603 tsk->comm, address);
604 dump_pagetable(address);
612 static void set_signal_archinfo(unsigned long address,
626 if (address >= TASK_SIZE_MAX)
631 tsk->thread.cr2 = address;
636 unsigned long address, int signal, int si_code)
652 if (fixup_exception(regs, X86_TRAP_PF, error_code, address)) {
668 set_signal_archinfo(address, error_code);
671 force_sig_fault(signal, si_code, (void __user *)address);
686 if (is_vmalloc_addr((void *)address) &&
687 (((unsigned long)tsk->stack - 1 - address < PAGE_SIZE) ||
688 address - ((unsigned long)tsk->stack + THREAD_SIZE) < PAGE_SIZE)) {
705 "S" (regs), "d" (address),
722 if (is_prefetch(regs, error_code, address))
725 if (is_errata93(regs, address))
733 efi_recover_from_page_fault(address);
742 show_fault_oops(regs, error_code, address);
752 printk(KERN_DEFAULT "CR2: %016lx\n", address);
763 unsigned long address, struct task_struct *tsk)
774 loglvl, tsk->comm, task_pid_nr(tsk), address,
786 * of the address space that has user-accessible permissions.
795 unsigned long address, u32 pkey, int si_code)
810 if (is_prefetch(regs, error_code, address))
813 if (is_errata100(regs, address))
821 if (address >= TASK_SIZE_MAX)
825 show_signal_msg(regs, error_code, address, tsk);
827 set_signal_archinfo(address, error_code);
830 force_sig_pkuerr((void __user *)address, pkey);
832 force_sig_fault(SIGSEGV, si_code, (void __user *)address);
839 if (is_f00f_bug(regs, address))
842 no_context(regs, error_code, address, SIGSEGV, si_code);
847 unsigned long address)
849 __bad_area_nosemaphore(regs, error_code, address, 0, SEGV_MAPERR);
854 unsigned long address, u32 pkey, int si_code)
863 __bad_area_nosemaphore(regs, error_code, address, pkey, si_code);
867 bad_area(struct pt_regs *regs, unsigned long error_code, unsigned long address)
869 __bad_area(regs, error_code, address, 0, SEGV_MAPERR);
891 unsigned long address, struct vm_area_struct *vma)
921 __bad_area(regs, error_code, address, pkey, SEGV_PKUERR);
923 __bad_area(regs, error_code, address, 0, SEGV_ACCERR);
928 do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
933 no_context(regs, error_code, address, SIGBUS, BUS_ADRERR);
938 if (is_prefetch(regs, error_code, address))
941 set_signal_archinfo(address, error_code);
950 tsk->comm, tsk->pid, address);
955 force_sig_mceerr(BUS_MCEERR_AR, (void __user *)address, lsb);
959 force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address);
964 unsigned long address, vm_fault_t fault)
967 no_context(regs, error_code, address, 0, 0);
974 no_context(regs, error_code, address,
988 do_sigbus(regs, error_code, address, fault);
990 bad_area_nosemaphore(regs, error_code, address);
1029 spurious_kernel_fault(unsigned long error_code, unsigned long address)
1051 pgd = init_mm.pgd + pgd_index(address);
1055 p4d = p4d_offset(pgd, address);
1062 pud = pud_offset(p4d, address);
1069 pmd = pmd_offset(pud, address);
1076 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)
1199 if (spurious_kernel_fault(hw_error_code, address))
1214 bad_area_nosemaphore(regs, hw_error_code, address);
1218 /* Handle faults in the user portion of the address space */
1222 unsigned long address)
1242 pgtable_bad(regs, hw_error_code, address);
1246 * pages in the user address space. The odd case here is WRUSS,
1255 bad_area_nosemaphore(regs, hw_error_code, address);
1264 bad_area_nosemaphore(regs, hw_error_code, address);
1283 perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
1293 * vsyscall page is at a high address (>PAGE_OFFSET), but is
1294 * considered to be part of the user address space.
1302 if (is_vsyscall_vaddr(address)) {
1303 if (emulate_vsyscall(hw_error_code, regs, address))
1309 * Kernel-mode access to the user address space should only occur
1313 * to validate the fault against the address space.
1326 bad_area_nosemaphore(regs, hw_error_code, address);
1340 vma = find_vma(mm, address);
1342 bad_area(regs, hw_error_code, address);
1345 if (likely(vma->vm_start <= address))
1348 bad_area(regs, hw_error_code, address);
1351 if (unlikely(expand_stack(vma, address))) {
1352 bad_area(regs, hw_error_code, address);
1362 bad_area_access_error(regs, hw_error_code, address, vma);
1379 fault = handle_mm_fault(vma, address, flags, regs);
1384 no_context(regs, hw_error_code, address, SIGBUS,
1402 mm_fault_error(regs, hw_error_code, address, fault);
1406 check_v8086_mode(regs, address, tsk);
1412 unsigned long address)
1418 trace_page_fault_user(address, regs, error_code);
1420 trace_page_fault_kernel(address, regs, error_code);
1425 unsigned long address)
1427 trace_page_fault_entries(regs, error_code, address);
1429 if (unlikely(kmmio_fault(regs, address)))
1432 /* Was the fault on kernel-controlled part of the address space? */
1433 if (unlikely(fault_in_kernel_space(address))) {
1434 do_kern_addr_fault(regs, error_code, address);
1436 do_user_addr_fault(regs, error_code, address);
1438 * User address page fault handling might have reenabled
1450 unsigned long address = read_cr2();
1476 if (kvm_handle_async_pf(regs, (u32)address))
1482 * be invoked because a kernel fault on a user space address might
1492 handle_page_fault(regs, error_code, address);