arm64: debug: avoid resetting stepping state machine when TIF_SINGLESTEP
[firefly-linux-kernel-4.4.55.git] / arch / arm64 / kernel / debug-monitors.c
index e51f27ac13fd230b758f8405c8d801d2313b6798..c8875b64be909f4e1c15c9be6060a1da988f972f 100644 (file)
@@ -422,8 +422,10 @@ int kernel_active_single_step(void)
 /* ptrace API */
 void user_enable_single_step(struct task_struct *task)
 {
-       set_ti_thread_flag(task_thread_info(task), TIF_SINGLESTEP);
-       set_regs_spsr_ss(task_pt_regs(task));
+       struct thread_info *ti = task_thread_info(task);
+
+       if (!test_and_set_ti_thread_flag(ti, TIF_SINGLESTEP))
+               set_regs_spsr_ss(task_pt_regs(task));
 }
 
 void user_disable_single_step(struct task_struct *task)