Skip to contentSkip to conversation

btrfs-progs: fix problems reported by cppcheck

PATCH New Kenji Okimoto 1 participant 4 messages Nov 15, 2012 Btrfs file system

lore
Share & tools
lore
#0 lore raw

cover btrfs-progs: fix problems reported by cppcheck

I fixed some problems reported by cppcheck:

[disk-io.c:462]: (error) Memory leak: log_root
[utils.c:983]: (error) Memory leak: fullpath

Patch set based on:
git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git#master

commit 91d9eec1ff044394f2b98ee7fcb76713dd33b994
Author: Chris Mason <[email protected]>
Date: Thu Oct 4 20:35:31 2012 -0400

Kenji Okimoto (3):
btrfs-progs: plug a memory leak reported by cppcheck
btrfs-progs: check malloc() result
btrfs-progs: plug memory leaks in btrfs_scan_one_dir() reported by
cppcheck.

 disk-io.c |   13 +++++++++++--
 utils.c   |    3 +++
 2 files changed, 14 insertions(+), 2 deletions(-)
Signature · 1 line
1.7.10.4
#1 lore raw

PATCH 1/3 btrfs-progs: plug a memory leak reported by cppcheck

[src/btrfs/disk-io.c:462]: (error) Memory leak: log_root

---
 disk-io.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
disk-io.c +8 -2
index 0395205..32f45dc 100644
@@ -458,8 +458,10 @@ static int find_and_setup_log_root(struct btrfs_root *tree_root,
 	u64 blocknr = btrfs_super_log_root(disk_super);
 	struct btrfs_root *log_root = malloc(sizeof(struct btrfs_root));
 
-	if (blocknr == 0)
+	if (blocknr == 0) {
+		free(log_root);
 		return 0;
+	}
 
 	blocksize = btrfs_level_size(tree_root,
 			     btrfs_super_log_root_level(disk_super));
@@ -474,8 +476,12 @@ static int find_and_setup_log_root(struct btrfs_root *tree_root,
 
 	fs_info->log_root_tree = log_root;
 
-	if (!extent_buffer_uptodate(log_root->node))
+	if (!extent_buffer_uptodate(log_root->node)) {
+		free(log_root);
 		return -EIO;
+	}
+
+	free(log_root);
 	return 0;
 }
 
Signature · 1 line
1.7.10.4
#2 lore raw

PATCH 2/3 btrfs-progs: check malloc() result

In reply to Kenji Okimoto
---
 disk-io.c |    3 +++
 1 file changed, 3 insertions(+)
disk-io.c +3 -0
index 32f45dc..c4d4631 100644
@@ -458,6 +458,9 @@ static int find_and_setup_log_root(struct btrfs_root *tree_root,
 	u64 blocknr = btrfs_super_log_root(disk_super);
 	struct btrfs_root *log_root = malloc(sizeof(struct btrfs_root));
 
+	if (!log_root)
+		return -ENOMEM;
+
 	if (blocknr == 0) {
 		free(log_root);
 		return 0;
Signature · 1 line
1.7.10.4
#3 lore raw

PATCH 3/3 btrfs-progs: plug memory leaks in btrfs_scan_one_dir() reported by cppcheck.

In reply to Kenji Okimoto

[utils.c:983]: (error) Memory leak: fullpath

---
 utils.c |    3 +++
 1 file changed, 3 insertions(+)
utils.c +3 -0
index 205e667..3efb3af 100644
@@ -980,6 +980,7 @@ again:
 	dirp = opendir(dirname);
 	if (!dirp) {
 		fprintf(stderr, "Unable to open %s for scanning\n", dirname);
+		free(fullpath);
 		return -ENOENT;
 	}
 	while(1) {
@@ -1030,6 +1031,7 @@ again:
 		free(pending);
 		pending = list_entry(pending_list.next, struct pending_dir,
 				     list);
+		free(fullpath);
 		list_del(&pending->list);
 		closedir(dirp);
 		dirp = NULL;
@@ -1038,6 +1040,7 @@ again:
 	ret = 0;
 fail:
 	free(pending);
+	free(fullpath);
 	if (dirp)
 		closedir(dirp);
 	return ret;
Signature · 1 line
1.7.10.4