> #define CREATE_TRACE_POINTS > #include <asm/trace/exceptions.h> > @@ -928,6 +929,9 @@ __bad_area_nosemaphore(struct pt_regs *regs, unsigned > long error_code, > if (address >= TASK_SIZE_MAX) > error_code |= X86_PF_PROT; > > + if (fixup_vdso_exception(regs, X86_TRAP_PF, error_code, > address)) > + return; > + > if (likely(show_unhandled_signals)) > show_signal_msg(regs, error_code, address, tsk);
I'd preferably like to get this plugged into the page fault code before we get to the "bad_area" handling. This plugs it in near the erratum handling which seems really late to me. > @@ -1045,6 +1049,9 @@ do_sigbus(struct pt_regs *regs, unsigned long > error_code, unsigned long address, > if (is_prefetch(regs, error_code, address)) > return; > > + if (fixup_vdso_exception(regs, X86_TRAP_PF, error_code, address)) > + return; > + > set_signal_archinfo(address, error_code); > > #ifdef CONFIG_MEMORY_FAILURE This *seems* really late to me. We've already called into the mm fault handling code to try and handle the fault and they told us it was VM_FAULT_SIGBUS. Shouldn't we have just detected that it was in the vDSO first and not even called the handling code?