summaryrefslogtreecommitdiffstats
path: root/daemons/cmirrord
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2010-12-20 13:57:19 +0000
committerZdenek Kabelac <zkabelac@redhat.com>2010-12-20 13:57:19 +0000
commit9d3be13f4fde09c55d73d7315db7882b4fad041a (patch)
tree51b6a3dcd8b52ac217ae5f61833fadaa8fa65cf5 /daemons/cmirrord
parentf7e7f3e3ed2cf7ae9b2d3acce874f6306b4cddd0 (diff)
downloadlvm2-9d3be13f4fde09c55d73d7315db7882b4fad041a.tar.gz
lvm2-9d3be13f4fde09c55d73d7315db7882b4fad041a.tar.xz
lvm2-9d3be13f4fde09c55d73d7315db7882b4fad041a.zip
Use dm_free for dm_malloc-ed areas in _clog_ctr/_clog_dtr (cmirrord).
Use dm_zalloc to obtain zeroed memory block. Use dm_free for dm_ allocated memory blocks. Test close() for error.
Diffstat (limited to 'daemons/cmirrord')
-rw-r--r--daemons/cmirrord/functions.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/daemons/cmirrord/functions.c b/daemons/cmirrord/functions.c
index 58e76ac4..d773c425 100644
--- a/daemons/cmirrord/functions.c
+++ b/daemons/cmirrord/functions.c
@@ -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;
}