Re: [REGRESSION] x86/debug: After PTRACE_SINGLESTEP DR_STEP is no longer reported in dr6

From: Kyle Huey
Date: Mon Oct 26 2020 - 12:08:55 EST


On Mon, Oct 26, 2020 at 8:55 AM Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
> Urgh, now I have to try and remember how all that worked again ...

Sorry.

> I suspect it's either one (or both) of the last two:
>
> f4956cf83ed1 ("x86/debug: Support negative polarity DR6 bits")
> d53d9bc0cf78 ("x86/debug: Change thread.debugreg6 to thread.virtual_dr6")

I think it's the latter, particularly the removal of this assignment[0]

> Just to clarify, the sequence is something like:
>
> - tracer: ptrace(PTRACE_SINGLESTEP)
> - tracee: #DB, DR6 contains DR_STEP
> - tracer: ptrace_get_debugreg(6)

Right.

> Also, can you confirm that pthread_set_debugreg(6) should not do
> anything useful?

I don't believe it did anything useful.

- Kyle

[0] https://github.com/torvalds/linux/commit/d53d9bc0cf78#diff-51ce909c2f65ed9cc668bc36cc3c18528541d8a10e84287874cd37a5918abae5L790