aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel/process.c')
-rw-r--r--arch/arm/kernel/process.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 401e38be1f78..974af1c3eb1d 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -29,6 +29,7 @@
29#include <linux/utsname.h> 29#include <linux/utsname.h>
30#include <linux/uaccess.h> 30#include <linux/uaccess.h>
31#include <linux/random.h> 31#include <linux/random.h>
32#include <linux/hw_breakpoint.h>
32 33
33#include <asm/cacheflush.h> 34#include <asm/cacheflush.h>
34#include <asm/leds.h> 35#include <asm/leds.h>
@@ -317,6 +318,8 @@ void flush_thread(void)
317 struct thread_info *thread = current_thread_info(); 318 struct thread_info *thread = current_thread_info();
318 struct task_struct *tsk = current; 319 struct task_struct *tsk = current;
319 320
321 flush_ptrace_hw_breakpoint(tsk);
322
320 memset(thread->used_cp, 0, sizeof(thread->used_cp)); 323 memset(thread->used_cp, 0, sizeof(thread->used_cp));
321 memset(&tsk->thread.debug, 0, sizeof(struct debug_info)); 324 memset(&tsk->thread.debug, 0, sizeof(struct debug_info));
322 memset(&thread->fpstate, 0, sizeof(union fp_state)); 325 memset(&thread->fpstate, 0, sizeof(union fp_state));
@@ -345,6 +348,8 @@ copy_thread(unsigned long clone_flags, unsigned long stack_start,
345 thread->cpu_context.sp = (unsigned long)childregs; 348 thread->cpu_context.sp = (unsigned long)childregs;
346 thread->cpu_context.pc = (unsigned long)ret_from_fork; 349 thread->cpu_context.pc = (unsigned long)ret_from_fork;
347 350
351 clear_ptrace_hw_breakpoint(p);
352
348 if (clone_flags & CLONE_SETTLS) 353 if (clone_flags & CLONE_SETTLS)
349 thread->tp_value = regs->ARM_r3; 354 thread->tp_value = regs->ARM_r3;
350 355