lkml.org 
[lkml]   [2012]   [Aug]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 2/2] ptrace: fix set_task_blockstep()->update_debugctlmsr() logic
On 08/03/2012 06:29 PM, Oleg Nesterov wrote:
> diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
> index afa60db..636402e 100644
> --- a/arch/x86/kernel/step.c
> +++ b/arch/x86/kernel/step.c
> @@ -166,12 +166,18 @@ static void set_task_blockstep(struct task_struct *task, bool on)
> else
> clear_tsk_thread_flag(task, TIF_BLOCKSTEP);
>
> + if (task != current)
> + return;
> +
> + /* ensure irq/preemption can't change debugctl in between */
> + local_irq_disable();
> debugctl = get_debugctlmsr();
> if (on)
> debugctl |= DEBUGCTLMSR_BTF;
> else
> debugctl&= ~DEBUGCTLMSR_BTF;
> update_debugctlmsr(debugctl);
> + local_irq_enable();

wouldn't preempt_disable() be enough?

> }
>
> /*

Sebastian


\
 
 \ /
  Last update: 2012-08-03 19:41    [W:0.071 / U:0.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site