summaryrefslogtreecommitdiff
path: root/fs/dlm/user.h
diff options
context:
space:
mode:
authorXiyu Yang <xiyuyang19@fudan.edu.cn>2020-04-21 10:54:11 +0800
committerDavid Sterba <dsterba@suse.com>2020-04-23 17:24:52 +0200
commitf6033c5e333238f299c3ae03fac8cc1365b23b77 (patch)
treec3790aeb5cfc4238f320fffa97e4a629039f1480 /fs/dlm/user.h
parentef67963dac255b293e19815ea3d440567be4626f (diff)
btrfs: fix block group leak when removing fails
btrfs_remove_block_group() invokes btrfs_lookup_block_group(), which returns a local reference of the block group that contains the given bytenr to "block_group" with increased refcount. When btrfs_remove_block_group() returns, "block_group" becomes invalid, so the refcount should be decreased to keep refcount balanced. The reference counting issue happens in several exception handling paths of btrfs_remove_block_group(). When those error scenarios occur such as btrfs_alloc_path() returns NULL, the function forgets to decrease its refcnt increased by btrfs_lookup_block_group() and will cause a refcnt leak. Fix this issue by jumping to "out_put_group" label and calling btrfs_put_block_group() when those error scenarios occur. CC: stable@vger.kernel.org # 4.4+ Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn> Signed-off-by: Xin Tan <tanxin.ctf@gmail.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/dlm/user.h')
0 files changed, 0 insertions, 0 deletions