linux/fs/btrfs
Zach Brown f276795627 btrfs: fix btrfs_cont_expand() freeing IS_ERR em
btrfs_cont_expand() tries to free an IS_ERR em as it gets an error from
btrfs_get_extent() and breaks out of its loop.

An instance of -EEXIST was reported in the wild:

  https://bugzilla.redhat.com/show_bug.cgi?id=874407

I have no idea if that -EEXIST is surprising, or not.  Regardless, this
error handling should be cleaned up to handle other reasonable errors
(ENOMEM, EIO; whatever).

This seemed to be the only buggy freeing of the relatively rare IS_ERR
em so I opted to fix the caller rather than teach free_extent_map() to
use IS_ERR_OR_NULL().

Signed-off-by: Zach Brown <zab@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
2013-01-14 13:53:23 -05:00
..
acl.c Btrfs: skip adding an acl attribute if we don't have to 2012-12-16 20:46:15 -05:00
async-thread.c
async-thread.h
backref.c Btrfs: merge inode_list in __merge_refs 2012-12-12 17:15:27 -05:00
backref.h Btrfs: extended inode refs support for send mechanism 2012-10-25 15:45:16 -04:00
btrfs_inode.h Btrfs: inline csums if we're fsyncing 2012-12-16 20:46:22 -05:00
check-integrity.c Btrfs: fix race in check-integrity caused by usage of bitfield 2012-12-16 20:46:13 -05:00
check-integrity.h
compat.h
compression.c Btrfs: handle errors from btrfs_map_bio() everywhere 2012-12-12 17:15:40 -05:00
compression.h
ctree.c Revert "Btrfs: reorder tree mod log operations in deleting a pointer" 2012-12-18 19:35:32 -05:00
ctree.h Btrfs: fix hash overflow handling 2012-12-17 14:48:21 -05:00
delayed-inode.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
delayed-inode.h
delayed-ref.c
delayed-ref.h
dev-replace.c Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dev-replace.h Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dir-item.c Btrfs: fix hash overflow handling 2012-12-17 14:48:21 -05:00
disk-io.c Btrfs: only clear dirty on the buffer if it is marked as dirty 2012-12-16 20:46:25 -05:00
disk-io.h Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
export.c
export.h
extent-tree.c Btrfs: reset path lock state to zero 2013-01-14 13:52:53 -05:00
extent_io.c Btrfs: handle errors from btrfs_map_bio() everywhere 2012-12-12 17:15:40 -05:00
extent_io.h Btrfs: pass fs_info to btrfs_map_block() instead of mapping_tree 2012-12-12 17:15:34 -05:00
extent_map.c Btrfs: log changed inodes based on the extent map tree 2012-12-16 20:46:24 -05:00
extent_map.h Btrfs: do not mark ems as prealloc if we are writing to them 2012-12-16 20:46:23 -05:00
file-item.c Btrfs: fix wrong file extent length 2012-12-12 17:15:21 -05:00
file.c Btrfs: fix a bug when llseek for delalloc bytes behind prealloc extents 2013-01-14 13:53:22 -05:00
free-space-cache.c Btrfs: use ctl->unit for free space calculation instead of block_group->sectorsize 2012-12-16 20:46:17 -05:00
free-space-cache.h
hash.h
inode-item.c
inode-map.c Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
inode-map.h
inode.c btrfs: fix btrfs_cont_expand() freeing IS_ERR em 2013-01-14 13:53:23 -05:00
ioctl.c Btrfs: fix missing write access release in btrfs_ioctl_resize() 2013-01-14 13:52:51 -05:00
ioctl.h Btrfs: add support for device replace ioctls 2012-12-16 20:46:06 -05:00
Kconfig
locking.c
locking.h
lzo.c
Makefile Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
math.h Btrfs: cleanup duplicated division functions 2012-12-11 13:31:30 -05:00
ordered-data.c Btrfs: cleanup for btrfs_wait_order_range 2012-12-12 17:15:19 -05:00
ordered-data.h Btrfs: make ordered extent be flushed by multi-task 2012-12-11 13:31:38 -05:00
orphan.c
print-tree.c Btrfs: introduce a btrfs_dev_replace_item type 2012-12-12 17:15:38 -05:00
print-tree.h
qgroup.c Btrfs: fix memory leak in btrfs_quota_enable() 2012-10-25 15:45:43 -04:00
rcu-string.h
reada.c Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
relocation.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
root-tree.c Btrfs: rename root_times_lock to root_item_lock 2012-12-16 20:46:21 -05:00
scrub.c Btrfs: fix BUG() in scrub when first superblock reading gives EIO 2012-12-16 20:46:28 -05:00
send.c Btrfs: fix memory leak in name_cache_insert() 2013-01-14 13:52:30 -05:00
send.h
struct-funcs.c
super.c Btrfs: use slabs for auto defrag allocation 2012-12-16 20:46:11 -05:00
sysfs.c
transaction.c Btrfs: fix hash overflow handling 2012-12-17 14:48:21 -05:00
transaction.h Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
tree-defrag.c
tree-log.c Btrfs: use tokens where we can in the tree log 2012-12-16 20:46:26 -05:00
tree-log.h
ulist.c
ulist.h
version.h
volumes.c btrfs: get the device in write mode when deleting it 2013-01-14 13:52:31 -05:00
volumes.h Btrfs: put raid properties into global table 2012-12-16 20:46:28 -05:00
xattr.c Btrfs: only log the inode item if we can get away with it 2012-12-16 20:46:21 -05:00
xattr.h
zlib.c