aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/step.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-04-14 07:11:02 -0400
committerPaul Mackerras <paulus@samba.org>2008-04-14 07:11:02 -0400
commitac7c5353b189e10cf5dd27399f64f7b013abffc6 (patch)
tree8222d92b774c256d6ec4399c716d76b3f05ddc4b /arch/x86/kernel/step.c
parenta8f75ea70c58546205fb7673be41455b9da5d9a7 (diff)
parent120dd64cacd4fb796bca0acba3665553f1d9ecaa (diff)
Merge branch 'linux-2.6'
Diffstat (limited to 'arch/x86/kernel/step.c')
-rw-r--r--arch/x86/kernel/step.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86/kernel/step.c b/arch/x86/kernel/step.c
index 9d406cdc847f..071ff4798236 100644
--- a/arch/x86/kernel/step.c
+++ b/arch/x86/kernel/step.c
@@ -140,6 +140,9 @@ static int enable_single_step(struct task_struct *child)
140 */ 140 */
141static void write_debugctlmsr(struct task_struct *child, unsigned long val) 141static void write_debugctlmsr(struct task_struct *child, unsigned long val)
142{ 142{
143 if (child->thread.debugctlmsr == val)
144 return;
145
143 child->thread.debugctlmsr = val; 146 child->thread.debugctlmsr = val;
144 147
145 if (child != current) 148 if (child != current)
@@ -165,11 +168,11 @@ static void enable_step(struct task_struct *child, bool block)
165 write_debugctlmsr(child, 168 write_debugctlmsr(child,
166 child->thread.debugctlmsr | DEBUGCTLMSR_BTF); 169 child->thread.debugctlmsr | DEBUGCTLMSR_BTF);
167 } else { 170 } else {
168 write_debugctlmsr(child, 171 write_debugctlmsr(child,
169 child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF); 172 child->thread.debugctlmsr & ~DEBUGCTLMSR_BTF);
170 173
171 if (!child->thread.debugctlmsr) 174 if (!child->thread.debugctlmsr)
172 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR); 175 clear_tsk_thread_flag(child, TIF_DEBUGCTLMSR);
173 } 176 }
174} 177}
175 178