Messages in this thread | | | Subject | Re: [PATCH v20 22/28] x86/traps: Attempt to fixup exceptions in vDSO before signaling | From | "Xing, Cedric" <> | Date | Thu, 11 Jul 2019 15:12:36 -0700 |
| |
On 7/11/2019 8:54 AM, Sean Christopherson wrote: > On Thu, Jun 27, 2019 at 01:32:58PM -0700, Xing, Cedric wrote: >> Just a reminder that #DB/#BP shall be treated differently because they are >> used by debuggers. So instead of branching to the fixup address, the kernel >> shall just signal the process. > > More importantly, doing fixup on #DB and #BP simply doesn't work.
What's really needed is a signal, as if the fixup entry didn't exist.
You don't have to care whether a debugger is attached or not.
> On Tue, Apr 23, 2019 at 11:59:37AM -0700, Sean Christopherson wrote: >> On Mon, Apr 22, 2019 at 06:29:06PM -0700, Andy Lutomirski wrote: >>> What's not tested here is running this code with EFLAGS.TF set and >>> making sure that it unwinds correctly. Also, Jarkko, unless I missed >>> something, the vDSO extable code likely has a bug. If you run the >>> instruction right before ENCLU with EFLAGS.TF set, then do_debug() >>> will eat the SIGTRAP and skip to the exception handler. Similarly, if >>> you put an instruction breakpoint on ENCLU, it'll get skipped. Or is >>> the code actually correct and am I just remembering wrong? >> >> The code is indeed broken, and I don't see a sane way to make it not >> broken other than to never do vDSO fixup on #DB or #BP. But that's >> probably the right thing to do anyways since an attached debugger is >> likely the intended recipient the 99.9999999% of the time. >> >> The crux of the matter is that it's impossible to identify whether or >> not a #DB/#BP originated from within an enclave, e.g. an INT3 in an >> enclave will look identical to an INT3 at the AEP. Even if hardware >> provided a magic flag, #DB still has scenarios where the intended >> recipient is ambiguous, e.g. data breakpoint encountered in the enclave >> but on an address outside of the enclave, breakpoint encountered in the >> enclave and a code breakpoint on the AEP, etc...
| |