On Tue, 24 Oct 2017 20:17:02 +0800 JianKang Chen <chenjianka...@huawei.com> wrote:
> The function register_kretprobe is used to initialize a struct > kretprobe and allocate a list table for kprobe instance. > However,in this function, there is a memory leak. > > The test case: > > static struct kretprobe rp; > struct kretprobe *rps[10]={&rp ,&rp ,&rp , > &rp ,&rp ,&rp ,&rp ,&rp ,&rp,&rp}; What ? this is buggy code. you must not list same kretprobe. But, year, since register_kprobe() already has similar protection against reusing, register_kretprobe() should do so. [..] > raw_spin_lock_init(&rp->lock); > + > + if (!hlist_empty(&rp->free_instances)) > + return -EBUSY; > + Hmm, but can you use check_kprobe_rereg() before raw_spin_lock_init()? If user reuses rp after it starts, rp->lock can already be used. Thank you, > INIT_HLIST_HEAD(&rp->free_instances); > for (i = 0; i < rp->maxactive; i++) { > inst = kmalloc(sizeof(struct kretprobe_instance) + > -- > 1.7.12.4 > -- Masami Hiramatsu <mhira...@kernel.org>