btrfs: fix leak in qgroup_subtree_accounting() error path
authorEric Sandeen <sandeen@redhat.com>
Sun, 17 Aug 2014 20:09:21 +0000 (15:09 -0500)
committerChris Mason <clm@fb.com>
Thu, 21 Aug 2014 14:55:29 +0000 (07:55 -0700)
commita3c108950d8e0bfcf48856cc159956022a7ad925
treee158d7b90824bea47a772c2386487aec62a2de3b
parent51f395ad4058883e4273b02fdebe98072dbdc0d2
btrfs: fix leak in qgroup_subtree_accounting() error path

Coverity pointed this out; in the newly added
qgroup_subtree_accounting(), if btrfs_find_all_roots()
returns an error, we leak at least the parents pointer,
and possibly the roots pointer, depending on what failure
occurs.

If btrfs_find_all_roots() returns an error, we need to
free up all allocations before we return.  "roots" is
initialized to NULL, so it should be safe to free
it unconditionally (ulist_free() handles that case).

Cc: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Mark Fasheh <mfasheh@suse.de>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/qgroup.c