Kenji Okimoto
2012-Nov-15 04:47 UTC
[PATCH 0/3] 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 <chris.mason@fusionio.com> 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(-) -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Kenji Okimoto
2012-Nov-15 04:47 UTC
[PATCH 1/3] btrfs-progs: plug a memory leak reported by cppcheck
[src/btrfs/disk-io.c:462]: (error) Memory leak: log_root Signed-off-by: Kenji Okimoto <okimoto@clear-code.com> --- disk-io.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/disk-io.c b/disk-io.c index 0395205..32f45dc 100644 --- a/disk-io.c +++ b/disk-io.c @@ -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; } -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Signed-off-by: Kenji Okimoto <okimoto@clear-code.com> --- disk-io.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/disk-io.c b/disk-io.c index 32f45dc..c4d4631 100644 --- a/disk-io.c +++ b/disk-io.c @@ -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; -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Kenji Okimoto
2012-Nov-15 04:47 UTC
[PATCH 3/3] btrfs-progs: plug memory leaks in btrfs_scan_one_dir() reported by cppcheck.
[utils.c:983]: (error) Memory leak: fullpath Signed-off-by: Kenji Okimoto <okimoto@clear-code.com> --- utils.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/utils.c b/utils.c index 205e667..3efb3af 100644 --- a/utils.c +++ b/utils.c @@ -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; -- 1.7.10.4 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html