diff options
author | Oleg Nesterov <oleg@redhat.com> | 2013-03-24 13:24:37 -0400 |
---|---|---|
committer | Oleg Nesterov <oleg@redhat.com> | 2013-04-04 07:57:04 -0400 |
commit | ab0d805c7b9089f9a9b291f33ab95301d6604868 (patch) | |
tree | 6162392a40c89694c9d9c39453df73e6430433d5 /kernel/events/uprobes.c | |
parent | 3c9eb54f71fed86b761a6da4ad3eedc9566ceb8d (diff) |
uprobes: Turn copy_opcode() into copy_from_page()
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>
Diffstat (limited to 'kernel/events/uprobes.c')
-rw-r--r-- | kernel/events/uprobes.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c index ca9012930ce7..850eb9eb179b 100644 --- a/kernel/events/uprobes.c +++ b/kernel/events/uprobes.c | |||
@@ -187,10 +187,10 @@ bool __weak is_trap_insn(uprobe_opcode_t *insn) | |||
187 | return is_swbp_insn(insn); | 187 | return is_swbp_insn(insn); |
188 | } | 188 | } |
189 | 189 | ||
190 | static void copy_opcode(struct page *page, unsigned long vaddr, uprobe_opcode_t *opcode) | 190 | static void copy_from_page(struct page *page, unsigned long vaddr, void *dst, int len) |
191 | { | 191 | { |
192 | void *kaddr = kmap_atomic(page); | 192 | void *kaddr = kmap_atomic(page); |
193 | memcpy(opcode, kaddr + (vaddr & ~PAGE_MASK), UPROBE_SWBP_INSN_SIZE); | 193 | memcpy(dst, kaddr + (vaddr & ~PAGE_MASK), len); |
194 | kunmap_atomic(kaddr); | 194 | kunmap_atomic(kaddr); |
195 | } | 195 | } |
196 | 196 | ||
@@ -208,7 +208,7 @@ static int verify_opcode(struct page *page, unsigned long vaddr, uprobe_opcode_t | |||
208 | * is a trap variant; uprobes always wins over any other (gdb) | 208 | * is a trap variant; uprobes always wins over any other (gdb) |
209 | * breakpoint. | 209 | * breakpoint. |
210 | */ | 210 | */ |
211 | copy_opcode(page, vaddr, &old_opcode); | 211 | copy_from_page(page, vaddr, &old_opcode, UPROBE_SWBP_INSN_SIZE); |
212 | is_swbp = is_swbp_insn(&old_opcode); | 212 | is_swbp = is_swbp_insn(&old_opcode); |
213 | 213 | ||
214 | if (is_swbp_insn(new_opcode)) { | 214 | if (is_swbp_insn(new_opcode)) { |
@@ -1472,7 +1472,7 @@ static int is_trap_at_addr(struct mm_struct *mm, unsigned long vaddr) | |||
1472 | if (result < 0) | 1472 | if (result < 0) |
1473 | return result; | 1473 | return result; |
1474 | 1474 | ||
1475 | copy_opcode(page, vaddr, &opcode); | 1475 | copy_from_page(page, vaddr, &opcode, UPROBE_SWBP_INSN_SIZE); |
1476 | put_page(page); | 1476 | put_page(page); |
1477 | out: | 1477 | out: |
1478 | /* This needs to return true for any variant of the trap insn */ | 1478 | /* This needs to return true for any variant of the trap insn */ |