|
@@ -340,6 +340,8 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
|
|
|
|
|
|
WARN_ON(start & ((u64)PAGE_CACHE_SIZE - 1));
|
|
WARN_ON(start & ((u64)PAGE_CACHE_SIZE - 1));
|
|
cb = kmalloc(compressed_bio_size(root, compressed_len), GFP_NOFS);
|
|
cb = kmalloc(compressed_bio_size(root, compressed_len), GFP_NOFS);
|
|
|
|
+ if (!cb)
|
|
|
|
+ return -ENOMEM;
|
|
atomic_set(&cb->pending_bios, 0);
|
|
atomic_set(&cb->pending_bios, 0);
|
|
cb->errors = 0;
|
|
cb->errors = 0;
|
|
cb->inode = inode;
|
|
cb->inode = inode;
|
|
@@ -354,6 +356,10 @@ int btrfs_submit_compressed_write(struct inode *inode, u64 start,
|
|
bdev = BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev;
|
|
bdev = BTRFS_I(inode)->root->fs_info->fs_devices->latest_bdev;
|
|
|
|
|
|
bio = compressed_bio_alloc(bdev, first_byte, GFP_NOFS);
|
|
bio = compressed_bio_alloc(bdev, first_byte, GFP_NOFS);
|
|
|
|
+ if(!bio) {
|
|
|
|
+ kfree(cb);
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+ }
|
|
bio->bi_private = cb;
|
|
bio->bi_private = cb;
|
|
bio->bi_end_io = end_compressed_bio_write;
|
|
bio->bi_end_io = end_compressed_bio_write;
|
|
atomic_inc(&cb->pending_bios);
|
|
atomic_inc(&cb->pending_bios);
|