hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/arm64/mm/fault.c
....@@ -299,7 +299,7 @@
299299 show_pte(addr);
300300 die("Oops", regs, esr);
301301 bust_spinlocks(0);
302
- do_exit(SIGKILL);
302
+ make_task_dead(SIGKILL);
303303 }
304304
305305 #ifdef CONFIG_KASAN_HW_TAGS
....@@ -361,6 +361,11 @@
361361 return false;
362362 }
363363
364
+static bool is_translation_fault(unsigned long esr)
365
+{
366
+ return (esr & ESR_ELx_FSC_TYPE) == ESR_ELx_FSC_FAULT;
367
+}
368
+
364369 static void __do_kernel_fault(unsigned long addr, unsigned int esr,
365370 struct pt_regs *regs)
366371 {
....@@ -393,7 +398,8 @@
393398 } else if (addr < PAGE_SIZE) {
394399 msg = "NULL pointer dereference";
395400 } else {
396
- if (kfence_handle_page_fault(addr, esr & ESR_ELx_WNR, regs))
401
+ if (is_translation_fault(esr) &&
402
+ kfence_handle_page_fault(addr, esr & ESR_ELx_WNR, regs))
397403 return;
398404
399405 msg = "paging request";
....@@ -478,8 +484,8 @@
478484 }
479485 }
480486
481
-#define VM_FAULT_BADMAP 0x010000
482
-#define VM_FAULT_BADACCESS 0x020000
487
+#define VM_FAULT_BADMAP ((__force vm_fault_t)0x010000)
488
+#define VM_FAULT_BADACCESS ((__force vm_fault_t)0x020000)
483489
484490 static int __do_page_fault(struct vm_area_struct *vma, unsigned long addr,
485491 unsigned int mm_flags, unsigned long vm_flags,