[dm-devel] double free in recent multipath-tools

Mike Snitzer snitzer at redhat.com
Wed Apr 22 22:05:44 UTC 2009


Seems the latest multipath-tools has an issue with a double free.  I
haven't looked at what the proper fix is yet but I wanted to give others
a heads up.

Running something as basic as 'multipath' drops a core.

The recent commit 37b079e555c459bd902a3855f223e3803aeb1fbe appears to
have the offending hunk:

@@ -404,6 +410,12 @@ free_config (struct config * conf)
        if (conf->checker_name)
                FREE(conf->checker_name);
 
+       if (conf->prio_name)
+               FREE(conf->prio_name);
+
+       if (conf->checker_name)
+               FREE(conf->checker_name);
+
        free_blacklist(conf->blist_devnode);
        free_blacklist(conf->blist_wwid);
        free_blacklist_device(conf->blist_device);


(gdb) bt
#0  0x0000003a6ec32f05 in raise () from /lib64/libc.so.6
#1  0x0000003a6ec34a73 in abort () from /lib64/libc.so.6
#2  0x0000003a6ec72438 in __libc_message () from /lib64/libc.so.6
#3  0x0000003a6ec77ec8 in malloc_printerr () from /lib64/libc.so.6
#4  0x0000003a6ec7a486 in free () from /lib64/libc.so.6
#5  0x00007ffff7dbc205 in xfree (p=0x60b2e0) at memory.c:52
#6  0x00007ffff7dc3624 in free_config (conf=0x604620) at config.c:414
#7  0x00000000004027a4 in main (argc=3, argv=0x7fffffffe718) at main.c:474
(gdb) frame 6
#6  0x00007ffff7dc3624 in free_config (conf=0x604620) at config.c:414
(gdb) l
409
410             if (conf->checker_name)
411                     FREE(conf->checker_name);
412
413             if (conf->prio_name)
414                     FREE(conf->prio_name);
415
416             if (conf->checker_name)
417                     FREE(conf->checker_name);
418




More information about the dm-devel mailing list