[PATCH v5 2/3] kprobes: copy ainsn after alloc aggr kprobe
From: Wang Nan <hidden>
Date: 2014-08-28 11:09:11
Also in:
lkml
On 2014/8/28 17:39, Masami Hiramatsu wrote:
(2014/08/27 22:02), Wang Nan wrote:quoted
Copy old kprobe to newly alloced optimized_kprobe before arch_prepare_optimized_kprobe(). Original kprove can brings more information to optimizer. Signed-off-by: Wang Nan <redacted> Cc: Russell King <redacted> Cc: "David A. Long" <redacted> Cc: Jon Medhurst <redacted> Cc: Taras Kondratiuk <redacted> Cc: Ben Dooks <redacted> Cc: Ananth N Mavinakayanahalli <redacted> Cc: Anil S Keshavamurthy <redacted> Cc: "David S. Miller" <davem@davemloft.net> Cc: Masami Hiramatsu <redacted> Cc: Will Deacon <redacted> --- kernel/kprobes.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)diff --git a/kernel/kprobes.c b/kernel/kprobes.c index 3995f54..33cf568 100644 --- a/kernel/kprobes.c +++ b/kernel/kprobes.c@@ -730,7 +730,12 @@ static struct kprobe *alloc_aggr_kprobe(struct kprobe *p) return NULL; INIT_LIST_HEAD(&op->list); - op->kp.addr = p->addr;Do not remove this, since copy_kprobe() doesn't copy kp.addr. static inline void copy_kprobe(struct kprobe *ap, struct kprobe *p) { memcpy(&p->opcode, &ap->opcode, sizeof(kprobe_opcode_t)); memcpy(&p->ainsn, &ap->ainsn, sizeof(struct arch_specific_insn)); } Thank you,
It is my fault. I'll fix it in next version. Thank you for your comment!
quoted
+ + /* + * copy gives arch_prepare_optimized_kprobe + * more information + */ + copy_kprobe(p, &op->kp); arch_prepare_optimized_kprobe(op); return &op->kp;