]> sourceware.org Git - lvm2.git/commitdiff
Revert free of allocated segtype
authorZdenek Kabelac <zkabelac@redhat.com>
Tue, 28 Feb 2012 14:23:41 +0000 (14:23 +0000)
committerZdenek Kabelac <zkabelac@redhat.com>
Tue, 28 Feb 2012 14:23:41 +0000 (14:23 +0000)
lvm_register_segtype takes ownership of segtype and call destructor
for it in error path.

WHATS_NEW
lib/raid/raid.c
lib/replicator/replicator.c
lib/thin/thin.c

index a3f888548f1691791ad11ca61ceac3819da70a37..448a73d21dbb596688c6d50c050e8ef50cb5ff99 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.94 - 
 ====================================
+  Revert free of allocated segtype in init segment error path (2.02.89).
   Test dm_hash_insert() failures in filter-persistent.c and fid_add_mda().
   Ensure clvmd message is always \0 terminated after read.
   Better detection of missing dmeventd fifo connection (2.02.93).
index 354ca5087b418c16faacfe3592c32939806a3c67..097d36f44f4946c01d3fc1132e4316fce9717458 100644 (file)
@@ -456,10 +456,9 @@ int init_multiple_segtypes(struct cmd_context *cmd, struct segtype_library *segl
 
        do {
                if ((segtype = raid_segtype_fn[i](cmd)) &&
-                   !lvm_register_segtype(seglib, segtype)) {
-                       dm_free(segtype);
+                   !lvm_register_segtype(seglib, segtype))
+                       /* segtype is already destroyed */
                        return_0;
-               }
        } while (raid_segtype_fn[++i]);
 
        return 1;
index 1203349e0a3d718a891337e7449a699c726fa3b2..2571e81351dd5edbc5804a6522b2233fd50c950e 100644 (file)
@@ -772,10 +772,9 @@ int init_multiple_segtype(struct cmd_context *cmd, struct segtype_library *segli
        segtype->private = NULL;
        segtype->flags = SEG_REPLICATOR;
 
-       if (!lvm_register_segtype(seglib, segtype)) {
-               dm_free(segtype);
+       if (!lvm_register_segtype(seglib, segtype))
+               /* segtype is already destroyed */
                return_0;
-       }
 
        log_very_verbose("Initialised segtype: " REPLICATOR_MODULE);
 
@@ -787,10 +786,9 @@ int init_multiple_segtype(struct cmd_context *cmd, struct segtype_library *segli
        segtype->private = NULL;
        segtype->flags = SEG_REPLICATOR_DEV;
 
-       if (!lvm_register_segtype(seglib, segtype)) {
-               dm_free(segtype);
+       if (!lvm_register_segtype(seglib, segtype))
+               /* segtype is already destroyed */
                return_0;
-       }
 
        log_very_verbose("Initialised segtype: " REPLICATOR_DEV_MODULE);
 
index ccf0f8daa46214f1717e5d53444f6ff8cd9b1980..65b130b8ebc2fc51c07504626afe6d33257211ef 100644 (file)
@@ -607,10 +607,9 @@ int init_multiple_segtypes(struct cmd_context *cmd, struct segtype_library *segl
                        segtype->flags |= SEG_MONITORED;
 #  endif /* DMEVENTD */
 #endif
-               if (!lvm_register_segtype(seglib, segtype)) {
-                       dm_free(segtype);
+               if (!lvm_register_segtype(seglib, segtype))
+                       /* segtype is already destroyed */
                        return_0;
-               }
 
                log_very_verbose("Initialised segtype: %s", segtype->name);
        }
This page took 0.048795 seconds and 5 git commands to generate.