Messages in this thread | | | Subject | Re: [RFC PATCH 2/4] x86/fault: Attempt to fixup unhandled #PF in vDSO before signaling | From | Dave Hansen <> | Date | Thu, 6 Dec 2018 10:17:34 -0800 |
| |
> #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?
| |