Merge branch 'mm-pkeys-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / kernel / events / uprobes.c
index 5f6ce931f1eac3aace94813d0c13cca724ae53f9..220fc17b9718856ca906dadfb0fe4c4d4823d689 100644 (file)
@@ -299,7 +299,7 @@ int uprobe_write_opcode(struct mm_struct *mm, unsigned long vaddr,
 
 retry:
        /* Read the page with vaddr into memory */
-       ret = get_user_pages(NULL, mm, vaddr, 1, 0, 1, &old_page, &vma);
+       ret = get_user_pages_remote(NULL, mm, vaddr, 1, 0, 1, &old_page, &vma);
        if (ret <= 0)
                return ret;
 
@@ -1701,7 +1701,13 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
        if (likely(result == 0))
                goto out;
 
-       result = get_user_pages(NULL, mm, vaddr, 1, 0, 1, &page, NULL);
+       /*
+        * The NULL 'tsk' here ensures that any faults that occur here
+        * will not be accounted to the task.  'mm' *is* current->mm,
+        * but we treat this as a 'remote' access since it is
+        * essentially a kernel access to the memory.
+        */
+       result = get_user_pages_remote(NULL, mm, vaddr, 1, 0, 1, &page, NULL);
        if (result < 0)
                return result;