summaryrefslogtreecommitdiffstats
path: root/kernel/events/uprobes.c
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@redhat.com>2013-11-08 16:35:55 +0100
committerOleg Nesterov <oleg@redhat.com>2013-11-09 17:05:41 +0100
commit70d7f98722a7a1df1a55d6a92d0ce959c7aba9fd (patch)
tree3e17749985872ef3187a2f5d3bb17cf7a8dd84a2 /kernel/events/uprobes.c
parentuprobes: Export write_opcode() as uprobe_write_opcode() (diff)
downloadlinux-70d7f98722a7a1df1a55d6a92d0ce959c7aba9fd.tar.xz
linux-70d7f98722a7a1df1a55d6a92d0ce959c7aba9fd.zip
uprobes: Fix the wrong usage of current->utask in uprobe_copy_process()
Commit aa59c53fd459 "uprobes: Change uprobe_copy_process() to dup xol_area" has a stupid typo, we need to setup t->utask->vaddr but the code wrongly uses current->utask. Even with this bug dup_xol_work() works "in practice", but only because get_unmapped_area(NULL, TASK_SIZE - PAGE_SIZE) likely returns the same address every time. Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Diffstat (limited to '')
-rw-r--r--kernel/events/uprobes.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 0ac346ae5edb..5e5695038d2d 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -1447,7 +1447,7 @@ void uprobe_copy_process(struct task_struct *t, unsigned long flags)
if (!work)
return uprobe_warn(t, "dup xol area");
- utask->vaddr = area->vaddr;
+ t->utask->vaddr = area->vaddr;
init_task_work(work, dup_xol_work);
task_work_add(t, work, true);
}