xref: /openbmc/linux/arch/x86/mm/fault.c (revision 55b078f0)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  *  Copyright (C) 1995  Linus Torvalds
4  *  Copyright (C) 2001, 2002 Andi Kleen, SuSE Labs.
5  *  Copyright (C) 2008-2009, Red Hat Inc., Ingo Molnar
6  */
7 #include <linux/sched.h>		/* test_thread_flag(), ...	*/
8 #include <linux/sched/task_stack.h>	/* task_stack_*(), ...		*/
9 #include <linux/kdebug.h>		/* oops_begin/end, ...		*/
10 #include <linux/extable.h>		/* search_exception_tables	*/
11 #include <linux/memblock.h>		/* max_low_pfn			*/
12 #include <linux/kprobes.h>		/* NOKPROBE_SYMBOL, ...		*/
13 #include <linux/mmiotrace.h>		/* kmmio_handler, ...		*/
14 #include <linux/perf_event.h>		/* perf_sw_event		*/
15 #include <linux/hugetlb.h>		/* hstate_index_to_shift	*/
16 #include <linux/prefetch.h>		/* prefetchw			*/
17 #include <linux/context_tracking.h>	/* exception_enter(), ...	*/
18 #include <linux/uaccess.h>		/* faulthandler_disabled()	*/
19 #include <linux/efi.h>			/* efi_recover_from_page_fault()*/
20 #include <linux/mm_types.h>
21 
22 #include <asm/cpufeature.h>		/* boot_cpu_has, ...		*/
23 #include <asm/traps.h>			/* dotraplinkage, ...		*/
24 #include <asm/pgalloc.h>		/* pgd_*(), ...			*/
25 #include <asm/fixmap.h>			/* VSYSCALL_ADDR		*/
26 #include <asm/vsyscall.h>		/* emulate_vsyscall		*/
27 #include <asm/vm86.h>			/* struct vm86			*/
28 #include <asm/mmu_context.h>		/* vma_pkey()			*/
29 #include <asm/efi.h>			/* efi_recover_from_page_fault()*/
30 
31 #define CREATE_TRACE_POINTS
32 #include <asm/trace/exceptions.h>
33 
34 /*
35  * Returns 0 if mmiotrace is disabled, or if the fault is not
36  * handled by mmiotrace:
37  */
38 static nokprobe_inline int
39 kmmio_fault(struct pt_regs *regs, unsigned long addr)
40 {
41 	if (unlikely(is_kmmio_active()))
42 		if (kmmio_handler(regs, addr) == 1)
43 			return -1;
44 	return 0;
45 }
46 
47 static nokprobe_inline int kprobes_fault(struct pt_regs *regs)
48 {
49 	if (!kprobes_built_in())
50 		return 0;
51 	if (user_mode(regs))
52 		return 0;
53 	/*
54 	 * To be potentially processing a kprobe fault and to be allowed to call
55 	 * kprobe_running(), we have to be non-preemptible.
56 	 */
57 	if (preemptible())
58 		return 0;
59 	if (!kprobe_running())
60 		return 0;
61 	return kprobe_fault_handler(regs, X86_TRAP_PF);
62 }
63 
64 /*
65  * Prefetch quirks:
66  *
67  * 32-bit mode:
68  *
69  *   Sometimes AMD Athlon/Opteron CPUs report invalid exceptions on prefetch.
70  *   Check that here and ignore it.
71  *
72  * 64-bit mode:
73  *
74  *   Sometimes the CPU reports invalid exceptions on prefetch.
75  *   Check that here and ignore it.
76  *
77  * Opcode checker based on code by Richard Brunner.
78  */
79 static inline int
80 check_prefetch_opcode(struct pt_regs *regs, unsigned char *instr,
81 		      unsigned char opcode, int *prefetch)
82 {
83 	unsigned char instr_hi = opcode & 0xf0;
84 	unsigned char instr_lo = opcode & 0x0f;
85 
86 	switch (instr_hi) {
87 	case 0x20:
88 	case 0x30:
89 		/*
90 		 * Values 0x26,0x2E,0x36,0x3E are valid x86 prefixes.
91 		 * In X86_64 long mode, the CPU will signal invalid
92 		 * opcode if some of these prefixes are present so
93 		 * X86_64 will never get here anyway
94 		 */
95 		return ((instr_lo & 7) == 0x6);
96 #ifdef CONFIG_X86_64
97 	case 0x40:
98 		/*
99 		 * In AMD64 long mode 0x40..0x4F are valid REX prefixes
100 		 * Need to figure out under what instruction mode the
101 		 * instruction was issued. Could check the LDT for lm,
102 		 * but for now it's good enough to assume that long
103 		 * mode only uses well known segments or kernel.
104 		 */
105 		return (!user_mode(regs) || user_64bit_mode(regs));
106 #endif
107 	case 0x60:
108 		/* 0x64 thru 0x67 are valid prefixes in all modes. */
109 		return (instr_lo & 0xC) == 0x4;
110 	case 0xF0:
111 		/* 0xF0, 0xF2, 0xF3 are valid prefixes in all modes. */
112 		return !instr_lo || (instr_lo>>1) == 1;
113 	case 0x00:
114 		/* Prefetch instruction is 0x0F0D or 0x0F18 */
115 		if (probe_kernel_address(instr, opcode))
116 			return 0;
117 
118 		*prefetch = (instr_lo == 0xF) &&
119 			(opcode == 0x0D || opcode == 0x18);
120 		return 0;
121 	default:
122 		return 0;
123 	}
124 }
125 
126 static int
127 is_prefetch(struct pt_regs *regs, unsigned long error_code, unsigned long addr)
128 {
129 	unsigned char *max_instr;
130 	unsigned char *instr;
131 	int prefetch = 0;
132 
133 	/*
134 	 * If it was a exec (instruction fetch) fault on NX page, then
135 	 * do not ignore the fault:
136 	 */
137 	if (error_code & X86_PF_INSTR)
138 		return 0;
139 
140 	instr = (void *)convert_ip_to_linear(current, regs);
141 	max_instr = instr + 15;
142 
143 	if (user_mode(regs) && instr >= (unsigned char *)TASK_SIZE_MAX)
144 		return 0;
145 
146 	while (instr < max_instr) {
147 		unsigned char opcode;
148 
149 		if (probe_kernel_address(instr, opcode))
150 			break;
151 
152 		instr++;
153 
154 		if (!check_prefetch_opcode(regs, instr, opcode, &prefetch))
155 			break;
156 	}
157 	return prefetch;
158 }
159 
160 DEFINE_SPINLOCK(pgd_lock);
161 LIST_HEAD(pgd_list);
162 
163 #ifdef CONFIG_X86_32
164 static inline pmd_t *vmalloc_sync_one(pgd_t *pgd, unsigned long address)
165 {
166 	unsigned index = pgd_index(address);
167 	pgd_t *pgd_k;
168 	p4d_t *p4d, *p4d_k;
169 	pud_t *pud, *pud_k;
170 	pmd_t *pmd, *pmd_k;
171 
172 	pgd += index;
173 	pgd_k = init_mm.pgd + index;
174 
175 	if (!pgd_present(*pgd_k))
176 		return NULL;
177 
178 	/*
179 	 * set_pgd(pgd, *pgd_k); here would be useless on PAE
180 	 * and redundant with the set_pmd() on non-PAE. As would
181 	 * set_p4d/set_pud.
182 	 */
183 	p4d = p4d_offset(pgd, address);
184 	p4d_k = p4d_offset(pgd_k, address);
185 	if (!p4d_present(*p4d_k))
186 		return NULL;
187 
188 	pud = pud_offset(p4d, address);
189 	pud_k = pud_offset(p4d_k, address);
190 	if (!pud_present(*pud_k))
191 		return NULL;
192 
193 	pmd = pmd_offset(pud, address);
194 	pmd_k = pmd_offset(pud_k, address);
195 	if (!pmd_present(*pmd_k))
196 		return NULL;
197 
198 	if (!pmd_present(*pmd))
199 		set_pmd(pmd, *pmd_k);
200 	else
201 		BUG_ON(pmd_page(*pmd) != pmd_page(*pmd_k));
202 
203 	return pmd_k;
204 }
205 
206 void vmalloc_sync_all(void)
207 {
208 	unsigned long address;
209 
210 	if (SHARED_KERNEL_PMD)
211 		return;
212 
213 	for (address = VMALLOC_START & PMD_MASK;
214 	     address >= TASK_SIZE_MAX && address < FIXADDR_TOP;
215 	     address += PMD_SIZE) {
216 		struct page *page;
217 
218 		spin_lock(&pgd_lock);
219 		list_for_each_entry(page, &pgd_list, lru) {
220 			spinlock_t *pgt_lock;
221 			pmd_t *ret;
222 
223 			/* the pgt_lock only for Xen */
224 			pgt_lock = &pgd_page_get_mm(page)->page_table_lock;
225 
226 			spin_lock(pgt_lock);
227 			ret = vmalloc_sync_one(page_address(page), address);
228 			spin_unlock(pgt_lock);
229 
230 			if (!ret)
231 				break;
232 		}
233 		spin_unlock(&pgd_lock);
234 	}
235 }
236 
237 /*
238  * 32-bit:
239  *
240  *   Handle a fault on the vmalloc or module mapping area
241  */
242 static noinline int vmalloc_fault(unsigned long address)
243 {
244 	unsigned long pgd_paddr;
245 	pmd_t *pmd_k;
246 	pte_t *pte_k;
247 
248 	/* Make sure we are in vmalloc area: */
249 	if (!(address >= VMALLOC_START && address < VMALLOC_END))
250 		return -1;
251 
252 	/*
253 	 * Synchronize this task's top level page-table
254 	 * with the 'reference' page table.
255 	 *
256 	 * Do _not_ use "current" here. We might be inside
257 	 * an interrupt in the middle of a task switch..
258 	 */
259 	pgd_paddr = read_cr3_pa();
260 	pmd_k = vmalloc_sync_one(__va(pgd_paddr), address);
261 	if (!pmd_k)
262 		return -1;
263 
264 	if (pmd_large(*pmd_k))
265 		return 0;
266 
267 	pte_k = pte_offset_kernel(pmd_k, address);
268 	if (!pte_present(*pte_k))
269 		return -1;
270 
271 	return 0;
272 }
273 NOKPROBE_SYMBOL(vmalloc_fault);
274 
275 /*
276  * Did it hit the DOS screen memory VA from vm86 mode?
277  */
278 static inline void
279 check_v8086_mode(struct pt_regs *regs, unsigned long address,
280 		 struct task_struct *tsk)
281 {
282 #ifdef CONFIG_VM86
283 	unsigned long bit;
284 
285 	if (!v8086_mode(regs) || !tsk->thread.vm86)
286 		return;
287 
288 	bit = (address - 0xA0000) >> PAGE_SHIFT;
289 	if (bit < 32)
290 		tsk->thread.vm86->screen_bitmap |= 1 << bit;
291 #endif
292 }
293 
294 static bool low_pfn(unsigned long pfn)
295 {
296 	return pfn < max_low_pfn;
297 }
298 
299 static void dump_pagetable(unsigned long address)
300 {
301 	pgd_t *base = __va(read_cr3_pa());
302 	pgd_t *pgd = &base[pgd_index(address)];
303 	p4d_t *p4d;
304 	pud_t *pud;
305 	pmd_t *pmd;
306 	pte_t *pte;
307 
308 #ifdef CONFIG_X86_PAE
309 	pr_info("*pdpt = %016Lx ", pgd_val(*pgd));
310 	if (!low_pfn(pgd_val(*pgd) >> PAGE_SHIFT) || !pgd_present(*pgd))
311 		goto out;
312 #define pr_pde pr_cont
313 #else
314 #define pr_pde pr_info
315 #endif
316 	p4d = p4d_offset(pgd, address);
317 	pud = pud_offset(p4d, address);
318 	pmd = pmd_offset(pud, address);
319 	pr_pde("*pde = %0*Lx ", sizeof(*pmd) * 2, (u64)pmd_val(*pmd));
320 #undef pr_pde
321 
322 	/*
323 	 * We must not directly access the pte in the highpte
324 	 * case if the page table is located in highmem.
325 	 * And let's rather not kmap-atomic the pte, just in case
326 	 * it's allocated already:
327 	 */
328 	if (!low_pfn(pmd_pfn(*pmd)) || !pmd_present(*pmd) || pmd_large(*pmd))
329 		goto out;
330 
331 	pte = pte_offset_kernel(pmd, address);
332 	pr_cont("*pte = %0*Lx ", sizeof(*pte) * 2, (u64)pte_val(*pte));
333 out:
334 	pr_cont("\n");
335 }
336 
337 #else /* CONFIG_X86_64: */
338 
339 void vmalloc_sync_all(void)
340 {
341 	sync_global_pgds(VMALLOC_START & PGDIR_MASK, VMALLOC_END);
342 }
343 
344 /*
345  * 64-bit:
346  *
347  *   Handle a fault on the vmalloc area
348  */
349 static noinline int vmalloc_fault(unsigned long address)
350 {
351 	pgd_t *pgd, *pgd_k;
352 	p4d_t *p4d, *p4d_k;
353 	pud_t *pud;
354 	pmd_t *pmd;
355 	pte_t *pte;
356 
357 	/* Make sure we are in vmalloc area: */
358 	if (!(address >= VMALLOC_START && address < VMALLOC_END))
359 		return -1;
360 
361 	WARN_ON_ONCE(in_nmi());
362 
363 	/*
364 	 * Copy kernel mappings over when needed. This can also
365 	 * happen within a race in page table update. In the later
366 	 * case just flush:
367 	 */
368 	pgd = (pgd_t *)__va(read_cr3_pa()) + pgd_index(address);
369 	pgd_k = pgd_offset_k(address);
370 	if (pgd_none(*pgd_k))
371 		return -1;
372 
373 	if (pgtable_l5_enabled()) {
374 		if (pgd_none(*pgd)) {
375 			set_pgd(pgd, *pgd_k);
376 			arch_flush_lazy_mmu_mode();
377 		} else {
378 			BUG_ON(pgd_page_vaddr(*pgd) != pgd_page_vaddr(*pgd_k));
379 		}
380 	}
381 
382 	/* With 4-level paging, copying happens on the p4d level. */
383 	p4d = p4d_offset(pgd, address);
384 	p4d_k = p4d_offset(pgd_k, address);
385 	if (p4d_none(*p4d_k))
386 		return -1;
387 
388 	if (p4d_none(*p4d) && !pgtable_l5_enabled()) {
389 		set_p4d(p4d, *p4d_k);
390 		arch_flush_lazy_mmu_mode();
391 	} else {
392 		BUG_ON(p4d_pfn(*p4d) != p4d_pfn(*p4d_k));
393 	}
394 
395 	BUILD_BUG_ON(CONFIG_PGTABLE_LEVELS < 4);
396 
397 	pud = pud_offset(p4d, address);
398 	if (pud_none(*pud))
399 		return -1;
400 
401 	if (pud_large(*pud))
402 		return 0;
403 
404 	pmd = pmd_offset(pud, address);
405 	if (pmd_none(*pmd))
406 		return -1;
407 
408 	if (pmd_large(*pmd))
409 		return 0;
410 
411 	pte = pte_offset_kernel(pmd, address);
412 	if (!pte_present(*pte))
413 		return -1;
414 
415 	return 0;
416 }
417 NOKPROBE_SYMBOL(vmalloc_fault);
418 
419 #ifdef CONFIG_CPU_SUP_AMD
420 static const char errata93_warning[] =
421 KERN_ERR
422 "******* Your BIOS seems to not contain a fix for K8 errata #93\n"
423 "******* Working around it, but it may cause SEGVs or burn power.\n"
424 "******* Please consider a BIOS update.\n"
425 "******* Disabling USB legacy in the BIOS may also help.\n";
426 #endif
427 
428 /*
429  * No vm86 mode in 64-bit mode:
430  */
431 static inline void
432 check_v8086_mode(struct pt_regs *regs, unsigned long address,
433 		 struct task_struct *tsk)
434 {
435 }
436 
437 static int bad_address(void *p)
438 {
439 	unsigned long dummy;
440 
441 	return probe_kernel_address((unsigned long *)p, dummy);
442 }
443 
444 static void dump_pagetable(unsigned long address)
445 {
446 	pgd_t *base = __va(read_cr3_pa());
447 	pgd_t *pgd = base + pgd_index(address);
448 	p4d_t *p4d;
449 	pud_t *pud;
450 	pmd_t *pmd;
451 	pte_t *pte;
452 
453 	if (bad_address(pgd))
454 		goto bad;
455 
456 	pr_info("PGD %lx ", pgd_val(*pgd));
457 
458 	if (!pgd_present(*pgd))
459 		goto out;
460 
461 	p4d = p4d_offset(pgd, address);
462 	if (bad_address(p4d))
463 		goto bad;
464 
465 	pr_cont("P4D %lx ", p4d_val(*p4d));
466 	if (!p4d_present(*p4d) || p4d_large(*p4d))
467 		goto out;
468 
469 	pud = pud_offset(p4d, address);
470 	if (bad_address(pud))
471 		goto bad;
472 
473 	pr_cont("PUD %lx ", pud_val(*pud));
474 	if (!pud_present(*pud) || pud_large(*pud))
475 		goto out;
476 
477 	pmd = pmd_offset(pud, address);
478 	if (bad_address(pmd))
479 		goto bad;
480 
481 	pr_cont("PMD %lx ", pmd_val(*pmd));
482 	if (!pmd_present(*pmd) || pmd_large(*pmd))
483 		goto out;
484 
485 	pte = pte_offset_kernel(pmd, address);
486 	if (bad_address(pte))
487 		goto bad;
488 
489 	pr_cont("PTE %lx", pte_val(*pte));
490 out:
491 	pr_cont("\n");
492 	return;
493 bad:
494 	pr_info("BAD\n");
495 }
496 
497 #endif /* CONFIG_X86_64 */
498 
499 /*
500  * Workaround for K8 erratum #93 & buggy BIOS.
501  *
502  * BIOS SMM functions are required to use a specific workaround
503  * to avoid corruption of the 64bit RIP register on C stepping K8.
504  *
505  * A lot of BIOS that didn't get tested properly miss this.
506  *
507  * The OS sees this as a page fault with the upper 32bits of RIP cleared.
508  * Try to work around it here.
509  *
510  * Note we only handle faults in kernel here.
511  * Does nothing on 32-bit.
512  */
513 static int is_errata93(struct pt_regs *regs, unsigned long address)
514 {
515 #if defined(CONFIG_X86_64) && defined(CONFIG_CPU_SUP_AMD)
516 	if (boot_cpu_data.x86_vendor != X86_VENDOR_AMD
517 	    || boot_cpu_data.x86 != 0xf)
518 		return 0;
519 
520 	if (address != regs->ip)
521 		return 0;
522 
523 	if ((address >> 32) != 0)
524 		return 0;
525 
526 	address |= 0xffffffffUL << 32;
527 	if ((address >= (u64)_stext && address <= (u64)_etext) ||
528 	    (address >= MODULES_VADDR && address <= MODULES_END)) {
529 		printk_once(errata93_warning);
530 		regs->ip = address;
531 		return 1;
532 	}
533 #endif
534 	return 0;
535 }
536 
537 /*
538  * Work around K8 erratum #100 K8 in compat mode occasionally jumps
539  * to illegal addresses >4GB.
540  *
541  * We catch this in the page fault handler because these addresses
542  * are not reachable. Just detect this case and return.  Any code
543  * segment in LDT is compatibility mode.
544  */
545 static int is_errata100(struct pt_regs *regs, unsigned long address)
546 {
547 #ifdef CONFIG_X86_64
548 	if ((regs->cs == __USER32_CS || (regs->cs & (1<<2))) && (address >> 32))
549 		return 1;
550 #endif
551 	return 0;
552 }
553 
554 static int is_f00f_bug(struct pt_regs *regs, unsigned long address)
555 {
556 #ifdef CONFIG_X86_F00F_BUG
557 	unsigned long nr;
558 
559 	/*
560 	 * Pentium F0 0F C7 C8 bug workaround:
561 	 */
562 	if (boot_cpu_has_bug(X86_BUG_F00F)) {
563 		nr = (address - idt_descr.address) >> 3;
564 
565 		if (nr == 6) {
566 			do_invalid_op(regs, 0);
567 			return 1;
568 		}
569 	}
570 #endif
571 	return 0;
572 }
573 
574 static void
575 show_fault_oops(struct pt_regs *regs, unsigned long error_code,
576 		unsigned long address)
577 {
578 	if (!oops_may_print())
579 		return;
580 
581 	if (error_code & X86_PF_INSTR) {
582 		unsigned int level;
583 		pgd_t *pgd;
584 		pte_t *pte;
585 
586 		pgd = __va(read_cr3_pa());
587 		pgd += pgd_index(address);
588 
589 		pte = lookup_address_in_pgd(pgd, address, &level);
590 
591 		if (pte && pte_present(*pte) && !pte_exec(*pte))
592 			pr_crit("kernel tried to execute NX-protected page - exploit attempt? (uid: %d)\n",
593 				from_kuid(&init_user_ns, current_uid()));
594 		if (pte && pte_present(*pte) && pte_exec(*pte) &&
595 				(pgd_flags(*pgd) & _PAGE_USER) &&
596 				(__read_cr4() & X86_CR4_SMEP))
597 			pr_crit("unable to execute userspace code (SMEP?) (uid: %d)\n",
598 				from_kuid(&init_user_ns, current_uid()));
599 	}
600 
601 	pr_alert("BUG: unable to handle kernel %s at %px\n",
602 		 address < PAGE_SIZE ? "NULL pointer dereference" : "paging request",
603 		 (void *)address);
604 
605 	dump_pagetable(address);
606 }
607 
608 static noinline void
609 pgtable_bad(struct pt_regs *regs, unsigned long error_code,
610 	    unsigned long address)
611 {
612 	struct task_struct *tsk;
613 	unsigned long flags;
614 	int sig;
615 
616 	flags = oops_begin();
617 	tsk = current;
618 	sig = SIGKILL;
619 
620 	printk(KERN_ALERT "%s: Corrupted page table at address %lx\n",
621 	       tsk->comm, address);
622 	dump_pagetable(address);
623 
624 	tsk->thread.cr2		= address;
625 	tsk->thread.trap_nr	= X86_TRAP_PF;
626 	tsk->thread.error_code	= error_code;
627 
628 	if (__die("Bad pagetable", regs, error_code))
629 		sig = 0;
630 
631 	oops_end(flags, regs, sig);
632 }
633 
634 static noinline void
635 no_context(struct pt_regs *regs, unsigned long error_code,
636 	   unsigned long address, int signal, int si_code)
637 {
638 	struct task_struct *tsk = current;
639 	unsigned long flags;
640 	int sig;
641 
642 	/* Are we prepared to handle this kernel fault? */
643 	if (fixup_exception(regs, X86_TRAP_PF, error_code, address)) {
644 		/*
645 		 * Any interrupt that takes a fault gets the fixup. This makes
646 		 * the below recursive fault logic only apply to a faults from
647 		 * task context.
648 		 */
649 		if (in_interrupt())
650 			return;
651 
652 		/*
653 		 * Per the above we're !in_interrupt(), aka. task context.
654 		 *
655 		 * In this case we need to make sure we're not recursively
656 		 * faulting through the emulate_vsyscall() logic.
657 		 */
658 		if (current->thread.sig_on_uaccess_err && signal) {
659 			tsk->thread.trap_nr = X86_TRAP_PF;
660 			tsk->thread.error_code = error_code | X86_PF_USER;
661 			tsk->thread.cr2 = address;
662 
663 			/* XXX: hwpoison faults will set the wrong code. */
664 			force_sig_fault(signal, si_code, (void __user *)address,
665 					tsk);
666 		}
667 
668 		/*
669 		 * Barring that, we can do the fixup and be happy.
670 		 */
671 		return;
672 	}
673 
674 #ifdef CONFIG_VMAP_STACK
675 	/*
676 	 * Stack overflow?  During boot, we can fault near the initial
677 	 * stack in the direct map, but that's not an overflow -- check
678 	 * that we're in vmalloc space to avoid this.
679 	 */
680 	if (is_vmalloc_addr((void *)address) &&
681 	    (((unsigned long)tsk->stack - 1 - address < PAGE_SIZE) ||
682 	     address - ((unsigned long)tsk->stack + THREAD_SIZE) < PAGE_SIZE)) {
683 		unsigned long stack = this_cpu_read(orig_ist.ist[DOUBLEFAULT_STACK]) - sizeof(void *);
684 		/*
685 		 * We're likely to be running with very little stack space
686 		 * left.  It's plausible that we'd hit this condition but
687 		 * double-fault even before we get this far, in which case
688 		 * we're fine: the double-fault handler will deal with it.
689 		 *
690 		 * We don't want to make it all the way into the oops code
691 		 * and then double-fault, though, because we're likely to
692 		 * break the console driver and lose most of the stack dump.
693 		 */
694 		asm volatile ("movq %[stack], %%rsp\n\t"
695 			      "call handle_stack_overflow\n\t"
696 			      "1: jmp 1b"
697 			      : ASM_CALL_CONSTRAINT
698 			      : "D" ("kernel stack overflow (page fault)"),
699 				"S" (regs), "d" (address),
700 				[stack] "rm" (stack));
701 		unreachable();
702 	}
703 #endif
704 
705 	/*
706 	 * 32-bit:
707 	 *
708 	 *   Valid to do another page fault here, because if this fault
709 	 *   had been triggered by is_prefetch fixup_exception would have
710 	 *   handled it.
711 	 *
712 	 * 64-bit:
713 	 *
714 	 *   Hall of shame of CPU/BIOS bugs.
715 	 */
716 	if (is_prefetch(regs, error_code, address))
717 		return;
718 
719 	if (is_errata93(regs, address))
720 		return;
721 
722 	/*
723 	 * Buggy firmware could access regions which might page fault, try to
724 	 * recover from such faults.
725 	 */
726 	if (IS_ENABLED(CONFIG_EFI))
727 		efi_recover_from_page_fault(address);
728 
729 	/*
730 	 * Oops. The kernel tried to access some bad page. We'll have to
731 	 * terminate things with extreme prejudice:
732 	 */
733 	flags = oops_begin();
734 
735 	show_fault_oops(regs, error_code, address);
736 
737 	if (task_stack_end_corrupted(tsk))
738 		printk(KERN_EMERG "Thread overran stack, or stack corrupted\n");
739 
740 	tsk->thread.cr2		= address;
741 	tsk->thread.trap_nr	= X86_TRAP_PF;
742 	tsk->thread.error_code	= error_code;
743 
744 	sig = SIGKILL;
745 	if (__die("Oops", regs, error_code))
746 		sig = 0;
747 
748 	/* Executive summary in case the body of the oops scrolled away */
749 	printk(KERN_DEFAULT "CR2: %016lx\n", address);
750 
751 	oops_end(flags, regs, sig);
752 }
753 
754 /*
755  * Print out info about fatal segfaults, if the show_unhandled_signals
756  * sysctl is set:
757  */
758 static inline void
759 show_signal_msg(struct pt_regs *regs, unsigned long error_code,
760 		unsigned long address, struct task_struct *tsk)
761 {
762 	const char *loglvl = task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG;
763 
764 	if (!unhandled_signal(tsk, SIGSEGV))
765 		return;
766 
767 	if (!printk_ratelimit())
768 		return;
769 
770 	printk("%s%s[%d]: segfault at %lx ip %px sp %px error %lx",
771 		loglvl, tsk->comm, task_pid_nr(tsk), address,
772 		(void *)regs->ip, (void *)regs->sp, error_code);
773 
774 	print_vma_addr(KERN_CONT " in ", regs->ip);
775 
776 	printk(KERN_CONT "\n");
777 
778 	show_opcodes(regs, loglvl);
779 }
780 
781 /*
782  * The (legacy) vsyscall page is the long page in the kernel portion
783  * of the address space that has user-accessible permissions.
784  */
785 static bool is_vsyscall_vaddr(unsigned long vaddr)
786 {
787 	return unlikely((vaddr & PAGE_MASK) == VSYSCALL_ADDR);
788 }
789 
790 static void
791 __bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
792 		       unsigned long address, u32 pkey, int si_code)
793 {
794 	struct task_struct *tsk = current;
795 
796 	/* User mode accesses just cause a SIGSEGV */
797 	if (error_code & X86_PF_USER) {
798 		/*
799 		 * It's possible to have interrupts off here:
800 		 */
801 		local_irq_enable();
802 
803 		/*
804 		 * Valid to do another page fault here because this one came
805 		 * from user space:
806 		 */
807 		if (is_prefetch(regs, error_code, address))
808 			return;
809 
810 		if (is_errata100(regs, address))
811 			return;
812 
813 		/*
814 		 * To avoid leaking information about the kernel page table
815 		 * layout, pretend that user-mode accesses to kernel addresses
816 		 * are always protection faults.
817 		 */
818 		if (address >= TASK_SIZE_MAX)
819 			error_code |= X86_PF_PROT;
820 
821 		if (likely(show_unhandled_signals))
822 			show_signal_msg(regs, error_code, address, tsk);
823 
824 		tsk->thread.cr2		= address;
825 		tsk->thread.error_code	= error_code;
826 		tsk->thread.trap_nr	= X86_TRAP_PF;
827 
828 		if (si_code == SEGV_PKUERR)
829 			force_sig_pkuerr((void __user *)address, pkey);
830 
831 		force_sig_fault(SIGSEGV, si_code, (void __user *)address, tsk);
832 
833 		return;
834 	}
835 
836 	if (is_f00f_bug(regs, address))
837 		return;
838 
839 	no_context(regs, error_code, address, SIGSEGV, si_code);
840 }
841 
842 static noinline void
843 bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
844 		     unsigned long address)
845 {
846 	__bad_area_nosemaphore(regs, error_code, address, 0, SEGV_MAPERR);
847 }
848 
849 static void
850 __bad_area(struct pt_regs *regs, unsigned long error_code,
851 	   unsigned long address, u32 pkey, int si_code)
852 {
853 	struct mm_struct *mm = current->mm;
854 	/*
855 	 * Something tried to access memory that isn't in our memory map..
856 	 * Fix it, but check if it's kernel or user first..
857 	 */
858 	up_read(&mm->mmap_sem);
859 
860 	__bad_area_nosemaphore(regs, error_code, address, pkey, si_code);
861 }
862 
863 static noinline void
864 bad_area(struct pt_regs *regs, unsigned long error_code, unsigned long address)
865 {
866 	__bad_area(regs, error_code, address, 0, SEGV_MAPERR);
867 }
868 
869 static inline bool bad_area_access_from_pkeys(unsigned long error_code,
870 		struct vm_area_struct *vma)
871 {
872 	/* This code is always called on the current mm */
873 	bool foreign = false;
874 
875 	if (!boot_cpu_has(X86_FEATURE_OSPKE))
876 		return false;
877 	if (error_code & X86_PF_PK)
878 		return true;
879 	/* this checks permission keys on the VMA: */
880 	if (!arch_vma_access_permitted(vma, (error_code & X86_PF_WRITE),
881 				       (error_code & X86_PF_INSTR), foreign))
882 		return true;
883 	return false;
884 }
885 
886 static noinline void
887 bad_area_access_error(struct pt_regs *regs, unsigned long error_code,
888 		      unsigned long address, struct vm_area_struct *vma)
889 {
890 	/*
891 	 * This OSPKE check is not strictly necessary at runtime.
892 	 * But, doing it this way allows compiler optimizations
893 	 * if pkeys are compiled out.
894 	 */
895 	if (bad_area_access_from_pkeys(error_code, vma)) {
896 		/*
897 		 * A protection key fault means that the PKRU value did not allow
898 		 * access to some PTE.  Userspace can figure out what PKRU was
899 		 * from the XSAVE state.  This function captures the pkey from
900 		 * the vma and passes it to userspace so userspace can discover
901 		 * which protection key was set on the PTE.
902 		 *
903 		 * If we get here, we know that the hardware signaled a X86_PF_PK
904 		 * fault and that there was a VMA once we got in the fault
905 		 * handler.  It does *not* guarantee that the VMA we find here
906 		 * was the one that we faulted on.
907 		 *
908 		 * 1. T1   : mprotect_key(foo, PAGE_SIZE, pkey=4);
909 		 * 2. T1   : set PKRU to deny access to pkey=4, touches page
910 		 * 3. T1   : faults...
911 		 * 4.    T2: mprotect_key(foo, PAGE_SIZE, pkey=5);
912 		 * 5. T1   : enters fault handler, takes mmap_sem, etc...
913 		 * 6. T1   : reaches here, sees vma_pkey(vma)=5, when we really
914 		 *	     faulted on a pte with its pkey=4.
915 		 */
916 		u32 pkey = vma_pkey(vma);
917 
918 		__bad_area(regs, error_code, address, pkey, SEGV_PKUERR);
919 	} else {
920 		__bad_area(regs, error_code, address, 0, SEGV_ACCERR);
921 	}
922 }
923 
924 static void
925 do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
926 	  unsigned int fault)
927 {
928 	struct task_struct *tsk = current;
929 
930 	/* Kernel mode? Handle exceptions or die: */
931 	if (!(error_code & X86_PF_USER)) {
932 		no_context(regs, error_code, address, SIGBUS, BUS_ADRERR);
933 		return;
934 	}
935 
936 	/* User-space => ok to do another page fault: */
937 	if (is_prefetch(regs, error_code, address))
938 		return;
939 
940 	tsk->thread.cr2		= address;
941 	tsk->thread.error_code	= error_code;
942 	tsk->thread.trap_nr	= X86_TRAP_PF;
943 
944 #ifdef CONFIG_MEMORY_FAILURE
945 	if (fault & (VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE)) {
946 		unsigned lsb = 0;
947 
948 		pr_err(
949 	"MCE: Killing %s:%d due to hardware memory corruption fault at %lx\n",
950 			tsk->comm, tsk->pid, address);
951 		if (fault & VM_FAULT_HWPOISON_LARGE)
952 			lsb = hstate_index_to_shift(VM_FAULT_GET_HINDEX(fault));
953 		if (fault & VM_FAULT_HWPOISON)
954 			lsb = PAGE_SHIFT;
955 		force_sig_mceerr(BUS_MCEERR_AR, (void __user *)address, lsb, tsk);
956 		return;
957 	}
958 #endif
959 	force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address, tsk);
960 }
961 
962 static noinline void
963 mm_fault_error(struct pt_regs *regs, unsigned long error_code,
964 	       unsigned long address, vm_fault_t fault)
965 {
966 	if (fatal_signal_pending(current) && !(error_code & X86_PF_USER)) {
967 		no_context(regs, error_code, address, 0, 0);
968 		return;
969 	}
970 
971 	if (fault & VM_FAULT_OOM) {
972 		/* Kernel mode? Handle exceptions or die: */
973 		if (!(error_code & X86_PF_USER)) {
974 			no_context(regs, error_code, address,
975 				   SIGSEGV, SEGV_MAPERR);
976 			return;
977 		}
978 
979 		/*
980 		 * We ran out of memory, call the OOM killer, and return the
981 		 * userspace (which will retry the fault, or kill us if we got
982 		 * oom-killed):
983 		 */
984 		pagefault_out_of_memory();
985 	} else {
986 		if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON|
987 			     VM_FAULT_HWPOISON_LARGE))
988 			do_sigbus(regs, error_code, address, fault);
989 		else if (fault & VM_FAULT_SIGSEGV)
990 			bad_area_nosemaphore(regs, error_code, address);
991 		else
992 			BUG();
993 	}
994 }
995 
996 static int spurious_kernel_fault_check(unsigned long error_code, pte_t *pte)
997 {
998 	if ((error_code & X86_PF_WRITE) && !pte_write(*pte))
999 		return 0;
1000 
1001 	if ((error_code & X86_PF_INSTR) && !pte_exec(*pte))
1002 		return 0;
1003 
1004 	return 1;
1005 }
1006 
1007 /*
1008  * Handle a spurious fault caused by a stale TLB entry.
1009  *
1010  * This allows us to lazily refresh the TLB when increasing the
1011  * permissions of a kernel page (RO -> RW or NX -> X).  Doing it
1012  * eagerly is very expensive since that implies doing a full
1013  * cross-processor TLB flush, even if no stale TLB entries exist
1014  * on other processors.
1015  *
1016  * Spurious faults may only occur if the TLB contains an entry with
1017  * fewer permission than the page table entry.  Non-present (P = 0)
1018  * and reserved bit (R = 1) faults are never spurious.
1019  *
1020  * There are no security implications to leaving a stale TLB when
1021  * increasing the permissions on a page.
1022  *
1023  * Returns non-zero if a spurious fault was handled, zero otherwise.
1024  *
1025  * See Intel Developer's Manual Vol 3 Section 4.10.4.3, bullet 3
1026  * (Optional Invalidation).
1027  */
1028 static noinline int
1029 spurious_kernel_fault(unsigned long error_code, unsigned long address)
1030 {
1031 	pgd_t *pgd;
1032 	p4d_t *p4d;
1033 	pud_t *pud;
1034 	pmd_t *pmd;
1035 	pte_t *pte;
1036 	int ret;
1037 
1038 	/*
1039 	 * Only writes to RO or instruction fetches from NX may cause
1040 	 * spurious faults.
1041 	 *
1042 	 * These could be from user or supervisor accesses but the TLB
1043 	 * is only lazily flushed after a kernel mapping protection
1044 	 * change, so user accesses are not expected to cause spurious
1045 	 * faults.
1046 	 */
1047 	if (error_code != (X86_PF_WRITE | X86_PF_PROT) &&
1048 	    error_code != (X86_PF_INSTR | X86_PF_PROT))
1049 		return 0;
1050 
1051 	pgd = init_mm.pgd + pgd_index(address);
1052 	if (!pgd_present(*pgd))
1053 		return 0;
1054 
1055 	p4d = p4d_offset(pgd, address);
1056 	if (!p4d_present(*p4d))
1057 		return 0;
1058 
1059 	if (p4d_large(*p4d))
1060 		return spurious_kernel_fault_check(error_code, (pte_t *) p4d);
1061 
1062 	pud = pud_offset(p4d, address);
1063 	if (!pud_present(*pud))
1064 		return 0;
1065 
1066 	if (pud_large(*pud))
1067 		return spurious_kernel_fault_check(error_code, (pte_t *) pud);
1068 
1069 	pmd = pmd_offset(pud, address);
1070 	if (!pmd_present(*pmd))
1071 		return 0;
1072 
1073 	if (pmd_large(*pmd))
1074 		return spurious_kernel_fault_check(error_code, (pte_t *) pmd);
1075 
1076 	pte = pte_offset_kernel(pmd, address);
1077 	if (!pte_present(*pte))
1078 		return 0;
1079 
1080 	ret = spurious_kernel_fault_check(error_code, pte);
1081 	if (!ret)
1082 		return 0;
1083 
1084 	/*
1085 	 * Make sure we have permissions in PMD.
1086 	 * If not, then there's a bug in the page tables:
1087 	 */
1088 	ret = spurious_kernel_fault_check(error_code, (pte_t *) pmd);
1089 	WARN_ONCE(!ret, "PMD has incorrect permission bits\n");
1090 
1091 	return ret;
1092 }
1093 NOKPROBE_SYMBOL(spurious_kernel_fault);
1094 
1095 int show_unhandled_signals = 1;
1096 
1097 static inline int
1098 access_error(unsigned long error_code, struct vm_area_struct *vma)
1099 {
1100 	/* This is only called for the current mm, so: */
1101 	bool foreign = false;
1102 
1103 	/*
1104 	 * Read or write was blocked by protection keys.  This is
1105 	 * always an unconditional error and can never result in
1106 	 * a follow-up action to resolve the fault, like a COW.
1107 	 */
1108 	if (error_code & X86_PF_PK)
1109 		return 1;
1110 
1111 	/*
1112 	 * Make sure to check the VMA so that we do not perform
1113 	 * faults just to hit a X86_PF_PK as soon as we fill in a
1114 	 * page.
1115 	 */
1116 	if (!arch_vma_access_permitted(vma, (error_code & X86_PF_WRITE),
1117 				       (error_code & X86_PF_INSTR), foreign))
1118 		return 1;
1119 
1120 	if (error_code & X86_PF_WRITE) {
1121 		/* write, present and write, not present: */
1122 		if (unlikely(!(vma->vm_flags & VM_WRITE)))
1123 			return 1;
1124 		return 0;
1125 	}
1126 
1127 	/* read, present: */
1128 	if (unlikely(error_code & X86_PF_PROT))
1129 		return 1;
1130 
1131 	/* read, not present: */
1132 	if (unlikely(!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE))))
1133 		return 1;
1134 
1135 	return 0;
1136 }
1137 
1138 static int fault_in_kernel_space(unsigned long address)
1139 {
1140 	/*
1141 	 * On 64-bit systems, the vsyscall page is at an address above
1142 	 * TASK_SIZE_MAX, but is not considered part of the kernel
1143 	 * address space.
1144 	 */
1145 	if (IS_ENABLED(CONFIG_X86_64) && is_vsyscall_vaddr(address))
1146 		return false;
1147 
1148 	return address >= TASK_SIZE_MAX;
1149 }
1150 
1151 static inline bool smap_violation(int error_code, struct pt_regs *regs)
1152 {
1153 	if (!IS_ENABLED(CONFIG_X86_SMAP))
1154 		return false;
1155 
1156 	if (!static_cpu_has(X86_FEATURE_SMAP))
1157 		return false;
1158 
1159 	if (error_code & X86_PF_USER)
1160 		return false;
1161 
1162 	if (!user_mode(regs) && (regs->flags & X86_EFLAGS_AC))
1163 		return false;
1164 
1165 	return true;
1166 }
1167 
1168 /*
1169  * Called for all faults where 'address' is part of the kernel address
1170  * space.  Might get called for faults that originate from *code* that
1171  * ran in userspace or the kernel.
1172  */
1173 static void
1174 do_kern_addr_fault(struct pt_regs *regs, unsigned long hw_error_code,
1175 		   unsigned long address)
1176 {
1177 	/*
1178 	 * Protection keys exceptions only happen on user pages.  We
1179 	 * have no user pages in the kernel portion of the address
1180 	 * space, so do not expect them here.
1181 	 */
1182 	WARN_ON_ONCE(hw_error_code & X86_PF_PK);
1183 
1184 	/*
1185 	 * We can fault-in kernel-space virtual memory on-demand. The
1186 	 * 'reference' page table is init_mm.pgd.
1187 	 *
1188 	 * NOTE! We MUST NOT take any locks for this case. We may
1189 	 * be in an interrupt or a critical region, and should
1190 	 * only copy the information from the master page table,
1191 	 * nothing more.
1192 	 *
1193 	 * Before doing this on-demand faulting, ensure that the
1194 	 * fault is not any of the following:
1195 	 * 1. A fault on a PTE with a reserved bit set.
1196 	 * 2. A fault caused by a user-mode access.  (Do not demand-
1197 	 *    fault kernel memory due to user-mode accesses).
1198 	 * 3. A fault caused by a page-level protection violation.
1199 	 *    (A demand fault would be on a non-present page which
1200 	 *     would have X86_PF_PROT==0).
1201 	 */
1202 	if (!(hw_error_code & (X86_PF_RSVD | X86_PF_USER | X86_PF_PROT))) {
1203 		if (vmalloc_fault(address) >= 0)
1204 			return;
1205 	}
1206 
1207 	/* Was the fault spurious, caused by lazy TLB invalidation? */
1208 	if (spurious_kernel_fault(hw_error_code, address))
1209 		return;
1210 
1211 	/* kprobes don't want to hook the spurious faults: */
1212 	if (kprobes_fault(regs))
1213 		return;
1214 
1215 	/*
1216 	 * Note, despite being a "bad area", there are quite a few
1217 	 * acceptable reasons to get here, such as erratum fixups
1218 	 * and handling kernel code that can fault, like get_user().
1219 	 *
1220 	 * Don't take the mm semaphore here. If we fixup a prefetch
1221 	 * fault we could otherwise deadlock:
1222 	 */
1223 	bad_area_nosemaphore(regs, hw_error_code, address);
1224 }
1225 NOKPROBE_SYMBOL(do_kern_addr_fault);
1226 
1227 /* Handle faults in the user portion of the address space */
1228 static inline
1229 void do_user_addr_fault(struct pt_regs *regs,
1230 			unsigned long hw_error_code,
1231 			unsigned long address)
1232 {
1233 	unsigned long sw_error_code;
1234 	struct vm_area_struct *vma;
1235 	struct task_struct *tsk;
1236 	struct mm_struct *mm;
1237 	vm_fault_t fault, major = 0;
1238 	unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
1239 
1240 	tsk = current;
1241 	mm = tsk->mm;
1242 
1243 	/* kprobes don't want to hook the spurious faults: */
1244 	if (unlikely(kprobes_fault(regs)))
1245 		return;
1246 
1247 	/*
1248 	 * Reserved bits are never expected to be set on
1249 	 * entries in the user portion of the page tables.
1250 	 */
1251 	if (unlikely(hw_error_code & X86_PF_RSVD))
1252 		pgtable_bad(regs, hw_error_code, address);
1253 
1254 	/*
1255 	 * Check for invalid kernel (supervisor) access to user
1256 	 * pages in the user address space.
1257 	 */
1258 	if (unlikely(smap_violation(hw_error_code, regs))) {
1259 		bad_area_nosemaphore(regs, hw_error_code, address);
1260 		return;
1261 	}
1262 
1263 	/*
1264 	 * If we're in an interrupt, have no user context or are running
1265 	 * in a region with pagefaults disabled then we must not take the fault
1266 	 */
1267 	if (unlikely(faulthandler_disabled() || !mm)) {
1268 		bad_area_nosemaphore(regs, hw_error_code, address);
1269 		return;
1270 	}
1271 
1272 	/*
1273 	 * hw_error_code is literally the "page fault error code" passed to
1274 	 * the kernel directly from the hardware.  But, we will shortly be
1275 	 * modifying it in software, so give it a new name.
1276 	 */
1277 	sw_error_code = hw_error_code;
1278 
1279 	/*
1280 	 * It's safe to allow irq's after cr2 has been saved and the
1281 	 * vmalloc fault has been handled.
1282 	 *
1283 	 * User-mode registers count as a user access even for any
1284 	 * potential system fault or CPU buglet:
1285 	 */
1286 	if (user_mode(regs)) {
1287 		local_irq_enable();
1288 		/*
1289 		 * Up to this point, X86_PF_USER set in hw_error_code
1290 		 * indicated a user-mode access.  But, after this,
1291 		 * X86_PF_USER in sw_error_code will indicate either
1292 		 * that, *or* an implicit kernel(supervisor)-mode access
1293 		 * which originated from user mode.
1294 		 */
1295 		if (!(hw_error_code & X86_PF_USER)) {
1296 			/*
1297 			 * The CPU was in user mode, but the CPU says
1298 			 * the fault was not a user-mode access.
1299 			 * Must be an implicit kernel-mode access,
1300 			 * which we do not expect to happen in the
1301 			 * user address space.
1302 			 */
1303 			pr_warn_once("kernel-mode error from user-mode: %lx\n",
1304 					hw_error_code);
1305 
1306 			sw_error_code |= X86_PF_USER;
1307 		}
1308 		flags |= FAULT_FLAG_USER;
1309 	} else {
1310 		if (regs->flags & X86_EFLAGS_IF)
1311 			local_irq_enable();
1312 	}
1313 
1314 	perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address);
1315 
1316 	if (sw_error_code & X86_PF_WRITE)
1317 		flags |= FAULT_FLAG_WRITE;
1318 	if (sw_error_code & X86_PF_INSTR)
1319 		flags |= FAULT_FLAG_INSTRUCTION;
1320 
1321 #ifdef CONFIG_X86_64
1322 	/*
1323 	 * Instruction fetch faults in the vsyscall page might need
1324 	 * emulation.  The vsyscall page is at a high address
1325 	 * (>PAGE_OFFSET), but is considered to be part of the user
1326 	 * address space.
1327 	 *
1328 	 * The vsyscall page does not have a "real" VMA, so do this
1329 	 * emulation before we go searching for VMAs.
1330 	 */
1331 	if ((sw_error_code & X86_PF_INSTR) && is_vsyscall_vaddr(address)) {
1332 		if (emulate_vsyscall(regs, address))
1333 			return;
1334 	}
1335 #endif
1336 
1337 	/*
1338 	 * Kernel-mode access to the user address space should only occur
1339 	 * on well-defined single instructions listed in the exception
1340 	 * tables.  But, an erroneous kernel fault occurring outside one of
1341 	 * those areas which also holds mmap_sem might deadlock attempting
1342 	 * to validate the fault against the address space.
1343 	 *
1344 	 * Only do the expensive exception table search when we might be at
1345 	 * risk of a deadlock.  This happens if we
1346 	 * 1. Failed to acquire mmap_sem, and
1347 	 * 2. The access did not originate in userspace.  Note: either the
1348 	 *    hardware or earlier page fault code may set X86_PF_USER
1349 	 *    in sw_error_code.
1350 	 */
1351 	if (unlikely(!down_read_trylock(&mm->mmap_sem))) {
1352 		if (!(sw_error_code & X86_PF_USER) &&
1353 		    !search_exception_tables(regs->ip)) {
1354 			/*
1355 			 * Fault from code in kernel from
1356 			 * which we do not expect faults.
1357 			 */
1358 			bad_area_nosemaphore(regs, sw_error_code, address);
1359 			return;
1360 		}
1361 retry:
1362 		down_read(&mm->mmap_sem);
1363 	} else {
1364 		/*
1365 		 * The above down_read_trylock() might have succeeded in
1366 		 * which case we'll have missed the might_sleep() from
1367 		 * down_read():
1368 		 */
1369 		might_sleep();
1370 	}
1371 
1372 	vma = find_vma(mm, address);
1373 	if (unlikely(!vma)) {
1374 		bad_area(regs, sw_error_code, address);
1375 		return;
1376 	}
1377 	if (likely(vma->vm_start <= address))
1378 		goto good_area;
1379 	if (unlikely(!(vma->vm_flags & VM_GROWSDOWN))) {
1380 		bad_area(regs, sw_error_code, address);
1381 		return;
1382 	}
1383 	if (sw_error_code & X86_PF_USER) {
1384 		/*
1385 		 * Accessing the stack below %sp is always a bug.
1386 		 * The large cushion allows instructions like enter
1387 		 * and pusha to work. ("enter $65535, $31" pushes
1388 		 * 32 pointers and then decrements %sp by 65535.)
1389 		 */
1390 		if (unlikely(address + 65536 + 32 * sizeof(unsigned long) < regs->sp)) {
1391 			bad_area(regs, sw_error_code, address);
1392 			return;
1393 		}
1394 	}
1395 	if (unlikely(expand_stack(vma, address))) {
1396 		bad_area(regs, sw_error_code, address);
1397 		return;
1398 	}
1399 
1400 	/*
1401 	 * Ok, we have a good vm_area for this memory access, so
1402 	 * we can handle it..
1403 	 */
1404 good_area:
1405 	if (unlikely(access_error(sw_error_code, vma))) {
1406 		bad_area_access_error(regs, sw_error_code, address, vma);
1407 		return;
1408 	}
1409 
1410 	/*
1411 	 * If for any reason at all we couldn't handle the fault,
1412 	 * make sure we exit gracefully rather than endlessly redo
1413 	 * the fault.  Since we never set FAULT_FLAG_RETRY_NOWAIT, if
1414 	 * we get VM_FAULT_RETRY back, the mmap_sem has been unlocked.
1415 	 *
1416 	 * Note that handle_userfault() may also release and reacquire mmap_sem
1417 	 * (and not return with VM_FAULT_RETRY), when returning to userland to
1418 	 * repeat the page fault later with a VM_FAULT_NOPAGE retval
1419 	 * (potentially after handling any pending signal during the return to
1420 	 * userland). The return to userland is identified whenever
1421 	 * FAULT_FLAG_USER|FAULT_FLAG_KILLABLE are both set in flags.
1422 	 */
1423 	fault = handle_mm_fault(vma, address, flags);
1424 	major |= fault & VM_FAULT_MAJOR;
1425 
1426 	/*
1427 	 * If we need to retry the mmap_sem has already been released,
1428 	 * and if there is a fatal signal pending there is no guarantee
1429 	 * that we made any progress. Handle this case first.
1430 	 */
1431 	if (unlikely(fault & VM_FAULT_RETRY)) {
1432 		/* Retry at most once */
1433 		if (flags & FAULT_FLAG_ALLOW_RETRY) {
1434 			flags &= ~FAULT_FLAG_ALLOW_RETRY;
1435 			flags |= FAULT_FLAG_TRIED;
1436 			if (!fatal_signal_pending(tsk))
1437 				goto retry;
1438 		}
1439 
1440 		/* User mode? Just return to handle the fatal exception */
1441 		if (flags & FAULT_FLAG_USER)
1442 			return;
1443 
1444 		/* Not returning to user mode? Handle exceptions or die: */
1445 		no_context(regs, sw_error_code, address, SIGBUS, BUS_ADRERR);
1446 		return;
1447 	}
1448 
1449 	up_read(&mm->mmap_sem);
1450 	if (unlikely(fault & VM_FAULT_ERROR)) {
1451 		mm_fault_error(regs, sw_error_code, address, fault);
1452 		return;
1453 	}
1454 
1455 	/*
1456 	 * Major/minor page fault accounting. If any of the events
1457 	 * returned VM_FAULT_MAJOR, we account it as a major fault.
1458 	 */
1459 	if (major) {
1460 		tsk->maj_flt++;
1461 		perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MAJ, 1, regs, address);
1462 	} else {
1463 		tsk->min_flt++;
1464 		perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address);
1465 	}
1466 
1467 	check_v8086_mode(regs, address, tsk);
1468 }
1469 NOKPROBE_SYMBOL(do_user_addr_fault);
1470 
1471 /*
1472  * This routine handles page faults.  It determines the address,
1473  * and the problem, and then passes it off to one of the appropriate
1474  * routines.
1475  */
1476 static noinline void
1477 __do_page_fault(struct pt_regs *regs, unsigned long hw_error_code,
1478 		unsigned long address)
1479 {
1480 	prefetchw(&current->mm->mmap_sem);
1481 
1482 	if (unlikely(kmmio_fault(regs, address)))
1483 		return;
1484 
1485 	/* Was the fault on kernel-controlled part of the address space? */
1486 	if (unlikely(fault_in_kernel_space(address)))
1487 		do_kern_addr_fault(regs, hw_error_code, address);
1488 	else
1489 		do_user_addr_fault(regs, hw_error_code, address);
1490 }
1491 NOKPROBE_SYMBOL(__do_page_fault);
1492 
1493 static nokprobe_inline void
1494 trace_page_fault_entries(unsigned long address, struct pt_regs *regs,
1495 			 unsigned long error_code)
1496 {
1497 	if (user_mode(regs))
1498 		trace_page_fault_user(address, regs, error_code);
1499 	else
1500 		trace_page_fault_kernel(address, regs, error_code);
1501 }
1502 
1503 /*
1504  * We must have this function blacklisted from kprobes, tagged with notrace
1505  * and call read_cr2() before calling anything else. To avoid calling any
1506  * kind of tracing machinery before we've observed the CR2 value.
1507  *
1508  * exception_{enter,exit}() contains all sorts of tracepoints.
1509  */
1510 dotraplinkage void notrace
1511 do_page_fault(struct pt_regs *regs, unsigned long error_code)
1512 {
1513 	unsigned long address = read_cr2(); /* Get the faulting address */
1514 	enum ctx_state prev_state;
1515 
1516 	prev_state = exception_enter();
1517 	if (trace_pagefault_enabled())
1518 		trace_page_fault_entries(address, regs, error_code);
1519 
1520 	__do_page_fault(regs, error_code, address);
1521 	exception_exit(prev_state);
1522 }
1523 NOKPROBE_SYMBOL(do_page_fault);
1524