Add uretprobes cleanup when swap_register_uprobe() fails
Change-Id: I89d2528d01835b5f6c2d3dd2d2f9bc0148c25d8b
Signed-off-by: Alexander Aksenov <a.aksenov@samsung.com>
for (i = 0; i < rp->maxactive; i++) {
inst = kmalloc(sizeof(*inst) + rp->data_size, GFP_KERNEL);
if (inst == NULL) {
- free_urp_inst(rp);
- return -ENOMEM;
+ ret = -ENOMEM;
+ goto register_err;
}
INIT_HLIST_NODE(&inst->uflist);
/* Establish function entry probe point */
ret = swap_register_uprobe(&rp->up);
if (ret)
- return ret;
+ goto register_err;
arch_opcode_analysis_uretprobe(rp);
return 0;
+
+register_err:
+ free_urp_inst(rp);
+
+ return ret;
}
EXPORT_SYMBOL_GPL(swap_register_uretprobe);