Messages in this thread Patch in this message | | | Date | Fri, 24 Aug 2012 11:04:42 +0900 | From | Masami Hiramatsu <> | Subject | Re: [Memory Leak] free kprobe before optimized_kprobe free |
| |
(2012/08/24 2:05), akhilesh kumar wrote: > From a77438899c7295299b59cdca8d1816ea69d6ed8e Mon Sep 17 00:00:00 2001 > From: Akhilesh Kumar <akhilesh.lxr@gmail.com> > Date: Fri, 10 Aug 2012 14:02:07 +0530 > Subject:[Memory Leak] free kprobe before optimized_kprobe free > > Free *ap before *op otherwise ap pointer will be Dangling
Nack, since ap == op, this causes double free.
/* * Internal structure for direct jump optimized probe */ struct optimized_kprobe { struct kprobe kp; struct list_head list; /* list for optimizing queue */ struct arch_optimized_insn optinsn; };
Please look into alloc_aggr_kprobe() which allocates optimized_kprobe, and returns op->kp.
Thank you,
> > Signed-off-by: Akhilesh Kumar <akhilesh.lxr@gmail.com> > --- > kernel/kprobes.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/kernel/kprobes.c b/kernel/kprobes.c > index c62b854..ff0a97b 100644 > --- a/kernel/kprobes.c > +++ b/kernel/kprobes.c > @@ -767,6 +767,7 @@ static __kprobes void > try_to_optimize_kprobe(struct kprobe *p) > if (!arch_prepared_optinsn(&op->optinsn)) { > /* If failed to setup optimizing, fallback to kprobe */ > arch_remove_optimized_kprobe(op); > + kfree(ap); > kfree(op); > return; > } >
-- Masami HIRAMATSU Software Platform Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu.pt@hitachi.com
| |