diff options
author | Oleg Nesterov <oleg@redhat.com> | 2013-11-08 19:35:55 +0400 |
---|---|---|
committer | Oleg Nesterov <oleg@redhat.com> | 2013-11-09 20:05:41 +0400 |
commit | 70d7f98722a7a1df1a55d6a92d0ce959c7aba9fd (patch) | |
tree | 3e17749985872ef3187a2f5d3bb17cf7a8dd84a2 | |
parent | f72d41fa902fb19a9b63028202a400b0ce497491 (diff) | |
download | linux-70d7f98722a7a1df1a55d6a92d0ce959c7aba9fd.tar.xz |
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>
-rw-r--r-- | kernel/events/uprobes.c | 2 |
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); } |