On 10/31/2020 8:27 AM, Fenghua Yu wrote:

...

diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 3c70fb34028b..1c3442000972 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -953,6 +953,13 @@ static __always_inline void exc_debug_user(struct pt_regs 
*regs,
                goto out_irq;
        }
+ /*
+        * Handle bus lock. #DB for bus lock can only be triggered from
+        * userspace.
+        */
+       if (!(dr6 & DR_BUS_LOCK))

it should be

        if (dr6 & DR_BUS_LOCK)

since you keep DR6.[bit 11] reserved in this version. bit 11 of debug_read_clear_dr6() being set to 1 means bus lock detected.


+               handle_bus_lock(regs);
+
        /* Add the virtual_dr6 bits for signals. */
        dr6 |= current->thread.virtual_dr6;
        if (dr6 & (DR_STEP | DR_TRAP_BITS) || icebp)


Reply via email to