uprobes: Turn copy_opcode() into copy_from_page()
authorOleg Nesterov <oleg@redhat.com>
Sun, 24 Mar 2013 17:24:37 +0000 (18:24 +0100)
committerOleg Nesterov <oleg@redhat.com>
Thu, 4 Apr 2013 11:57:04 +0000 (13:57 +0200)
No functional changes. Rename copy_opcode() into copy_from_page() and
add the new "int len" argument to make it more more generic for the
new users.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Anton Arapov <anton@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
kernel/events/uprobes.c

index ca90129..850eb9e 100644 (file)
@@ -187,10 +187,10 @@ bool __weak is_trap_insn(uprobe_opcode_t *insn)
        return is_swbp_insn(insn);
 }
 
-static void copy_opcode(struct page *page, unsigned long vaddr, uprobe_opcode_t *opcode)
+static void copy_from_page(struct page *page, unsigned long vaddr, void *dst, int len)
 {
        void *kaddr = kmap_atomic(page);
-       memcpy(opcode, kaddr + (vaddr & ~PAGE_MASK), UPROBE_SWBP_INSN_SIZE);
+       memcpy(dst, kaddr + (vaddr & ~PAGE_MASK), len);
        kunmap_atomic(kaddr);
 }
 
@@ -208,7 +208,7 @@ static int verify_opcode(struct page *page, unsigned long vaddr, uprobe_opcode_t
         * is a trap variant; uprobes always wins over any other (gdb)
         * breakpoint.
         */
-       copy_opcode(page, vaddr, &old_opcode);
+       copy_from_page(page, vaddr, &old_opcode, UPROBE_SWBP_INSN_SIZE);
        is_swbp = is_swbp_insn(&old_opcode);
 
        if (is_swbp_insn(new_opcode)) {
@@ -1472,7 +1472,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr)
        if (result < 0)
                return result;
 
-       copy_opcode(page, vaddr, &opcode);
+       copy_from_page(page, vaddr, &opcode, UPROBE_SWBP_INSN_SIZE);
        put_page(page);
  out:
        /* This needs to return true for any variant of the trap insn */