From: Yan Date: Tue, 4 Dec 2007 18:20:20 +0000 (-0500) Subject: Btrfs: Fix buffer get/release issue in create_snapshot X-Git-Tag: v2.6.29-rc1~27^2~9^2~55^2~56^2~30^2~390 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=9691975dd663b255fa52404dc7de4b18892bf244;p=karo-tx-linux.git Btrfs: Fix buffer get/release issue in create_snapshot btrfs_cow_block expects a reference to be held on the buffer being cow'd. Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 37f8e0321af8..d0af0807d9f8 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -2034,11 +2034,11 @@ static int create_snapshot(struct btrfs_root *root, char *name, int namelen) key.objectid = objectid; key.offset = 1; btrfs_set_key_type(&key, BTRFS_ROOT_ITEM_KEY); - + extent_buffer_get(root->node); btrfs_cow_block(trans, root, root->node, NULL, 0, &tmp); + free_extent_buffer(tmp); btrfs_set_root_bytenr(&new_root_item, root->node->start); btrfs_set_root_level(&new_root_item, btrfs_header_level(root->node)); - ret = btrfs_insert_root(trans, root->fs_info->tree_root, &key, &new_root_item); if (ret)