dm-log.c:disk_log() was freeing the log by calling core_dtr(), then
using it.  [AJ Lewis]
--- diff/drivers/md/dm-log.c	2003-12-30 15:54:24.000000000 +0000
+++ source/drivers/md/dm-log.c	2004-01-05 15:58:39.000000000 +0000
@@ -419,10 +419,10 @@
 static void disk_dtr(struct dirty_log *log)
 {
 	struct log_c *lc = (struct log_c *) log->context;
-	core_dtr(log);
 	dm_put_device(lc->ti, lc->log_dev);
 	vfree(lc->disk_header);
 	vfree(lc->disk_bits);
+	core_dtr(log);
 }
 
 static int disk_resume(struct dirty_log *log)