aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r--fs/btrfs/inode.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 5f805bc944fa..24dfa27a4f76 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -6086,16 +6086,8 @@ static noinline int uncompress_inline(struct btrfs_path *path,
6086 max_size = min_t(unsigned long, PAGE_CACHE_SIZE, max_size); 6086 max_size = min_t(unsigned long, PAGE_CACHE_SIZE, max_size);
6087 ret = btrfs_decompress(compress_type, tmp, page, 6087 ret = btrfs_decompress(compress_type, tmp, page,
6088 extent_offset, inline_size, max_size); 6088 extent_offset, inline_size, max_size);
6089 if (ret) {
6090 char *kaddr = kmap_atomic(page);
6091 unsigned long copy_size = min_t(u64,
6092 PAGE_CACHE_SIZE - pg_offset,
6093 max_size - extent_offset);
6094 memset(kaddr + pg_offset, 0, copy_size);
6095 kunmap_atomic(kaddr);
6096 }
6097 kfree(tmp); 6089 kfree(tmp);
6098 return 0; 6090 return ret;
6099} 6091}
6100 6092
6101/* 6093/*
@@ -6296,7 +6288,10 @@ next:
6296 ret = uncompress_inline(path, inode, page, 6288 ret = uncompress_inline(path, inode, page,
6297 pg_offset, 6289 pg_offset,
6298 extent_offset, item); 6290 extent_offset, item);
6299 BUG_ON(ret); /* -ENOMEM */ 6291 if (ret) {
6292 err = ret;
6293 goto out;
6294 }
6300 } else { 6295 } else {
6301 map = kmap(page); 6296 map = kmap(page);
6302 read_extent_buffer(leaf, map + pg_offset, ptr, 6297 read_extent_buffer(leaf, map + pg_offset, ptr,