aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Dilger <adilger@whamcloud.com>2020-02-06 18:09:45 -0700
committerTheodore Ts'o <tytso@mit.edu>2020-03-04 18:10:14 -0500
commit70303df16ca6fb5939b5091b9cef6fac378c87d7 (patch)
tree1d27cc6e07f8f259013b77d2ee26bbeffde108ab
parent102993ec1c841ef9392652db5a7a546f470a1004 (diff)
downloade2fsprogs-70303df16ca6fb5939b5091b9cef6fac378c87d7.tar.gz
e2fsck: consistently use ext2fs_get_mem()
Consistently use ext2fs_get_mem() and ext2fs_free_mem() instead of calling malloc() and free() directly in e2fsck. In several places it is possible to use ext2fs_get_memzero() instead of explicitly calling memset() on the memory afterward. This is just a code cleanup, and does not fix any specific bugs. [ Fix up library dependencies in e2fsck/Makefile.in to fix "make check" breakages. -- TYT ] Signed-off-by: Andreas Dilger <adilger@whamcloud.com> Lustre-bug-id: https://jira.whamcloud.com/browse/LU-13197 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r--e2fsck/Makefile.in6
-rw-r--r--e2fsck/ea_refcount.c6
-rw-r--r--e2fsck/emptydir.c14
-rw-r--r--e2fsck/extend.c9
-rw-r--r--e2fsck/extents.c16
-rw-r--r--e2fsck/pass1b.c12
-rw-r--r--e2fsck/region.c18
7 files changed, 41 insertions, 40 deletions
diff --git a/e2fsck/Makefile.in b/e2fsck/Makefile.in
index bc7195f3d..4a926a7db 100644
--- a/e2fsck/Makefile.in
+++ b/e2fsck/Makefile.in
@@ -133,7 +133,7 @@ tst_problem: $(srcdir)/problem.c $(srcdir)/problem.h $(LIBEXT2FS) \
$(srcdir)/problem.c -DUNITTEST $(LIBEXT2FS) $(LIBCOM_ERR) \
$(LIBINTL) $(SYSLIBS)
-tst_refcount: ea_refcount.c $(DEPLIBCOM_ERR)
+tst_refcount: ea_refcount.c $(DEPLIBCOM_ERR) $(LIBEXT2FS)
$(E) " LD $@"
$(Q) $(CC) -o tst_refcount $(srcdir)/ea_refcount.c \
$(ALL_CFLAGS) $(ALL_LDFLAGS) -DTEST_PROGRAM \
@@ -144,11 +144,11 @@ tst_logfile: $(srcdir)/logfile.c
$(Q) $(CC) -o tst_logfile $(srcdir)/logfile.c \
$(ALL_CFLAGS) $(ALL_LDFLAGS) -DTEST_PROGRAM $(SYSLIBS)
-tst_region: region.c $(DEPLIBCOM_ERR)
+tst_region: region.c $(DEPLIBCOM_ERR) $(LIBEXT2FS)
$(E) " LD $@"
$(Q) $(CC) -o tst_region $(srcdir)/region.c \
$(ALL_CFLAGS) $(ALL_LDFLAGS) -DTEST_PROGRAM \
- $(LIBCOM_ERR) $(SYSLIBS)
+ $(LIBCOM_ERR) $(LIBEXT2FS) $(SYSLIBS)
fullcheck check:: tst_refcount tst_region tst_problem
$(TESTENV) ./tst_refcount
diff --git a/e2fsck/ea_refcount.c b/e2fsck/ea_refcount.c
index ecb198640..aa5d7d7f3 100644
--- a/e2fsck/ea_refcount.c
+++ b/e2fsck/ea_refcount.c
@@ -53,10 +53,9 @@ errcode_t ea_refcount_create(size_t size, ext2_refcount_t *ret)
errcode_t retval;
size_t bytes;
- retval = ext2fs_get_mem(sizeof(struct ea_refcount), &refcount);
+ retval = ext2fs_get_memzero(sizeof(struct ea_refcount), &refcount);
if (retval)
return retval;
- memset(refcount, 0, sizeof(struct ea_refcount));
if (!size)
size = 500;
@@ -66,10 +65,9 @@ errcode_t ea_refcount_create(size_t size, ext2_refcount_t *ret)
printf("Refcount allocated %zu entries, %zu bytes.\n",
refcount->size, bytes);
#endif
- retval = ext2fs_get_mem(bytes, &refcount->list);
+ retval = ext2fs_get_memzero(bytes, &refcount->list);
if (retval)
goto errout;
- memset(refcount->list, 0, bytes);
refcount->count = 0;
refcount->cursor = 0;
diff --git a/e2fsck/emptydir.c b/e2fsck/emptydir.c
index a3bfd46f7..7aea7b6f5 100644
--- a/e2fsck/emptydir.c
+++ b/e2fsck/emptydir.c
@@ -44,12 +44,11 @@ empty_dir_info init_empty_dir(e2fsck_t ctx)
empty_dir_info edi;
errcode_t retval;
- edi = malloc(sizeof(struct empty_dir_info_struct));
- if (!edi)
+ edi = e2fsck_allocate_memzero(ctx, sizeof(struct empty_dir_info_struct),
+ "empty dir info");
+ if (retval)
return NULL;
- memset(edi, 0, sizeof(struct empty_dir_info_struct));
-
retval = ext2fs_init_dblist(ctx->fs, &edi->empty_dblist);
if (retval)
goto errout;
@@ -83,7 +82,7 @@ void free_empty_dirblock(empty_dir_info edi)
ext2fs_free_inode_bitmap(edi->dir_map);
memset(edi, 0, sizeof(struct empty_dir_info_struct));
- free(edi);
+ ext2fs_free_mem(&edi);
}
void add_empty_dirblock(empty_dir_info edi,
@@ -182,13 +181,14 @@ void process_empty_dirblock(e2fsck_t ctx, empty_dir_info edi)
if (!edi)
return;
- edi->block_buf = malloc(ctx->fs->blocksize * 3);
+ retval = ext2f_get_mem(ctx, ctx->fs->blocksize * 3,
+ &edi->block_buf);
if (edi->block_buf) {
(void) ext2fs_dblist_iterate2(edi->empty_dblist,
fix_directory, &edi);
}
- free(edi->block_buf);
+ ext2fs_free_mem(&edi->block_buf);
free_empty_dirblock(edi);
}
diff --git a/e2fsck/extend.c b/e2fsck/extend.c
index bdb62c3e2..9d17e4402 100644
--- a/e2fsck/extend.c
+++ b/e2fsck/extend.c
@@ -31,6 +31,7 @@ int main(int argc, char **argv)
int nblocks, blocksize;
int fd;
char *block;
+ errcode_t retval;
int ret;
if (argc != 4)
@@ -45,13 +46,12 @@ int main(int argc, char **argv)
exit(1);
}
- block = malloc(blocksize);
- if (block == 0) {
+ retval = ext2fs_get_memzero(blocksize, &block);
+ if (retval) {
fprintf(stderr, _("Couldn't allocate block buffer (size=%d)\n"),
blocksize);
exit(1);
}
- memset(block, 0, blocksize);
fd = open(filename, O_RDWR);
if (fd < 0) {
@@ -78,5 +78,6 @@ int main(int argc, char **argv)
perror("read");
exit(1);
}
- exit(0);
+ ext2fs_free_mem(&block);
+ return(0);
}
diff --git a/e2fsck/extents.c b/e2fsck/extents.c
index e9af1bbeb..e9139326b 100644
--- a/e2fsck/extents.c
+++ b/e2fsck/extents.c
@@ -322,7 +322,7 @@ err:
/* Rebuild the extents immediately */
static errcode_t e2fsck_rebuild_extents(e2fsck_t ctx, ext2_ino_t ino)
{
- struct extent_list list;
+ struct extent_list list = { 0 };
errcode_t err;
if (!ext2fs_has_feature_extents(ctx->fs->super) ||
@@ -331,9 +331,8 @@ static errcode_t e2fsck_rebuild_extents(e2fsck_t ctx, ext2_ino_t ino)
return 0;
e2fsck_read_bitmaps(ctx);
- memset(&list, 0, sizeof(list));
- err = ext2fs_get_mem(sizeof(struct ext2fs_extent) * NUM_EXTENTS,
- &list.extents);
+ err = ext2fs_get_array(NUM_EXTENTS, sizeof(struct ext2fs_extent),
+ &list.extents);
if (err)
return err;
list.size = NUM_EXTENTS;
@@ -349,7 +348,7 @@ static void rebuild_extents(e2fsck_t ctx, const char *pass_name, int pr_header)
#ifdef RESOURCE_TRACK
struct resource_track rtrack;
#endif
- struct extent_list list;
+ struct extent_list list = { 0 };
int first = 1;
ext2_ino_t ino = 0;
errcode_t retval;
@@ -369,10 +368,11 @@ static void rebuild_extents(e2fsck_t ctx, const char *pass_name, int pr_header)
clear_problem_context(&pctx);
e2fsck_read_bitmaps(ctx);
- memset(&list, 0, sizeof(list));
- retval = ext2fs_get_mem(sizeof(struct ext2fs_extent) * NUM_EXTENTS,
- &list.extents);
list.size = NUM_EXTENTS;
+ retval = ext2fs_get_array(sizeof(struct ext2fs_extent),
+ list.size, &list.extents);
+ if (retval)
+ return;
while (1) {
retval = ext2fs_find_first_set_inode_bitmap2(
ctx->inodes_to_rebuild, ino + 1,
diff --git a/e2fsck/pass1b.c b/e2fsck/pass1b.c
index bca701cab..3352f9bd2 100644
--- a/e2fsck/pass1b.c
+++ b/e2fsck/pass1b.c
@@ -180,10 +180,10 @@ static void inode_dnode_free(dnode_t *node,
di = (struct dup_inode *) dnode_get(node);
for (p = di->cluster_list; p; p = next) {
next = p->next;
- free(p);
+ ext2fs_free_mem(&p);
}
- free(di);
- free(node);
+ ext2fs_free_mem(&di);
+ ext2fs_free_mem(&node);
}
/*
@@ -198,10 +198,10 @@ static void cluster_dnode_free(dnode_t *node,
dc = (struct dup_cluster *) dnode_get(node);
for (p = dc->inode_list; p; p = next) {
next = p->next;
- free(p);
+ ext2fs_free_mem(&p);
}
- free(dc);
- free(node);
+ ext2fs_free_mem(&dc);
+ ext2fs_free_mem(&node);
}
diff --git a/e2fsck/region.c b/e2fsck/region.c
index d5b37df85..788e0d0f5 100644
--- a/e2fsck/region.c
+++ b/e2fsck/region.c
@@ -36,11 +36,12 @@ struct region_struct {
region_t region_create(region_addr_t min, region_addr_t max)
{
region_t region;
+ errcode_t retval;
- region = malloc(sizeof(struct region_struct));
- if (!region)
+ retval = ext2fs_get_memzero(sizeof(struct region_struct), &region);
+ if (retval)
return NULL;
- memset(region, 0, sizeof(struct region_struct));
+
region->min = min;
region->max = max;
region->last = NULL;
@@ -53,16 +54,17 @@ void region_free(region_t region)
for (r = region->allocated; r; r = next) {
next = r->next;
- free(r);
+ ext2fs_free_mem(&r);
}
memset(region, 0, sizeof(struct region_struct));
- free(region);
+ ext2fs_free_mem(&region);
}
int region_allocate(region_t region, region_addr_t start, int n)
{
struct region_el *r, *new_region, *prev, *next;
region_addr_t end;
+ errcode_t retval;
end = start+n;
if ((start < region->min) || (end > region->max))
@@ -105,7 +107,7 @@ int region_allocate(region_t region, region_addr_t start, int n)
if (end == next->start) {
r->end = next->end;
r->next = next->next;
- free(next);
+ ext2fs_free_mem(&next);
if (!r->next)
region->last = r;
return 0;
@@ -121,8 +123,8 @@ int region_allocate(region_t region, region_addr_t start, int n)
* Insert a new region element structure into the linked list
*/
append_to_list:
- new_region = malloc(sizeof(struct region_el));
- if (!new_region)
+ retval = ext2fs_get_mem(sizeof(struct region_el), &new_region);
+ if (retval)
return -1;
new_region->start = start;
new_region->end = start + n;