uprobes: Fix the wrong usage of current->utask in uprobe_copy_process()
authorOleg Nesterov <oleg@redhat.com>
Fri, 8 Nov 2013 15:35:55 +0000 (16:35 +0100)
committerOleg Nesterov <oleg@redhat.com>
Sat, 9 Nov 2013 16:05:41 +0000 (17:05 +0100)
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>
kernel/events/uprobes.c

index 0ac346ae5edb85b3837ea264dfda877bcd103191..5e5695038d2d613d69ef8a50ab38b61b0bf912e1 100644 (file)
@@ -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);
 }