summaryrefslogtreecommitdiffstats
path: root/kernel/ptrace.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/ptrace.c')
-rw-r--r--kernel/ptrace.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 162c7083b..e009bca35 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -121,10 +121,13 @@ int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, in
struct vm_area_struct * vma;
/* Worry about races with exit() */
- lock_kernel();
+ task_lock(tsk);
mm = tsk->mm;
- atomic_inc(&mm->mm_users);
- unlock_kernel();
+ if (mm)
+ atomic_inc(&mm->mm_users);
+ task_unlock(tsk);
+ if (!mm)
+ return 0;
down(&mm->mmap_sem);
vma = find_extend_vma(mm, addr);