[FIX] remove memory leak in ksm_register_probe()
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 29 May 2013 12:29:22 +0000 (16:29 +0400)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 29 May 2013 12:29:22 +0000 (16:29 +0400)
ks_manager/ks_manager.c

index c0669e9..400b26d 100644 (file)
@@ -90,14 +90,19 @@ int ksm_register_probe(unsigned long addr, void *pre_handler,
 
        ret = dbi_register_jprobe(&p->p.jp);
        if (ret)
-               return ret;
+               goto free;
 
        ret = dbi_register_kretprobe(&p->p.rp);
        if (ret)
-               dbi_unregister_jprobe(&p->p.jp);
-       else
-               add_probe_to_list(p);
+               goto unregister_jprobe;
 
+       add_probe_to_list(p);
+       return 0;
+
+unregister_jprobe:
+       dbi_unregister_jprobe(&p->p.jp);
+free:
+       free_probe(p);
        return ret;
 }
 EXPORT_SYMBOL_GPL(ksm_register_probe);