]> sourceware.org Git - lvm2.git/commitdiff
Use dm_free for dm_malloc-ed areas in _clog_ctr/_clog_dtr (cmirrord).
authorZdenek Kabelac <zkabelac@redhat.com>
Mon, 20 Dec 2010 13:57:19 +0000 (13:57 +0000)
committerZdenek Kabelac <zkabelac@redhat.com>
Mon, 20 Dec 2010 13:57:19 +0000 (13:57 +0000)
Use dm_zalloc to obtain zeroed memory block.
Use dm_free for dm_ allocated memory blocks.
Test close() for error.

WHATS_NEW
daemons/cmirrord/functions.c

index f7691193b3584f7ec39f70a9189ed74ac6c295bd..c07180f0ca3047284c30b6a9467babb0449ceef6 100644 (file)
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.79 -  
 ===================================
+  Use dm_free for dm_malloc-ed areas in _clog_ctr/_clog_dtr (cmirrord).
   Add checks for allocation errors in config node clonning.
   Fix error path if regex engine cannot be created in _build_matcher().
   Use char* arithmetic in target_version(), _process_all(), _targets().
index 58e76ac492b68a38817d3de875791379cef9d369..d773c42545d70c9910ed050b5f97a9f4aa8c3ad4 100644 (file)
@@ -429,13 +429,12 @@ static int _clog_ctr(char *uuid, uint64_t luid,
                        block_on_error = 1;
        }
 
-       lc = malloc(sizeof(*lc));
+       lc = dm_zalloc(sizeof(*lc));
        if (!lc) {
                LOG_ERROR("Unable to allocate cluster log context");
                r = -ENOMEM;
                goto fail;
        }
-       memset(lc, 0, sizeof(*lc));
 
        lc->region_size = region_size;
        lc->region_count = region_count;
@@ -453,7 +452,7 @@ static int _clog_ctr(char *uuid, uint64_t luid,
            (duplicate = get_pending_log(lc->uuid, lc->luid))) {
                LOG_ERROR("[%s/%" PRIu64 "u] Log already exists, unable to create.",
                          SHORT_UUID(lc->uuid), lc->luid);
-               free(lc);
+               dm_free(lc);
                return -EINVAL;
        }
 
@@ -511,15 +510,13 @@ static int _clog_ctr(char *uuid, uint64_t luid,
        return 0;
 fail:
        if (lc) {
-               if (lc->clean_bits)
-                       free(lc->clean_bits);
-               if (lc->sync_bits)
-                       free(lc->sync_bits);
-               if (lc->disk_buffer)
-                       free(lc->disk_buffer);
-               if (lc->disk_fd >= 0)
-                       close(lc->disk_fd);
-               free(lc);
+               if (lc->disk_fd >= 0 && close(lc->disk_fd))
+                       LOG_ERROR("Close device error, %s: %s",
+                                 disk_path, strerror(errno));
+               free(lc->disk_buffer);
+               dm_free(lc->sync_bits);
+               dm_free(lc->clean_bits);
+               dm_free(lc);
        }
        return r;
 }
@@ -634,9 +631,9 @@ static int clog_dtr(struct dm_ulog_request *rq)
                close(lc->disk_fd);
        if (lc->disk_buffer)
                free(lc->disk_buffer);
-       free(lc->clean_bits);
-       free(lc->sync_bits);
-       free(lc);
+       dm_free(lc->clean_bits);
+       dm_free(lc->sync_bits);
+       dm_free(lc);
 
        return 0;
 }
This page took 0.045788 seconds and 5 git commands to generate.