|
@@ -6086,16 +6086,8 @@ static noinline int uncompress_inline(struct btrfs_path *path,
|
|
|
max_size = min_t(unsigned long, PAGE_CACHE_SIZE, max_size);
|
|
|
ret = btrfs_decompress(compress_type, tmp, page,
|
|
|
extent_offset, inline_size, max_size);
|
|
|
- if (ret) {
|
|
|
- char *kaddr = kmap_atomic(page);
|
|
|
- unsigned long copy_size = min_t(u64,
|
|
|
- PAGE_CACHE_SIZE - pg_offset,
|
|
|
- max_size - extent_offset);
|
|
|
- memset(kaddr + pg_offset, 0, copy_size);
|
|
|
- kunmap_atomic(kaddr);
|
|
|
- }
|
|
|
kfree(tmp);
|
|
|
- return 0;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
/*
|
|
@@ -6296,7 +6288,10 @@ next:
|
|
|
ret = uncompress_inline(path, inode, page,
|
|
|
pg_offset,
|
|
|
extent_offset, item);
|
|
|
- BUG_ON(ret); /* -ENOMEM */
|
|
|
+ if (ret) {
|
|
|
+ err = ret;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
} else {
|
|
|
map = kmap(page);
|
|
|
read_extent_buffer(leaf, map + pg_offset, ptr,
|