diff options
Diffstat (limited to 'fs/btrfs/ioctl.c')
-rw-r--r-- | fs/btrfs/ioctl.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 61168805f175..8fcf9a59c28d 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -343,7 +343,8 @@ static noinline int btrfs_ioctl_fitrim(struct file *file, void __user *arg) | |||
343 | return -EOPNOTSUPP; | 343 | return -EOPNOTSUPP; |
344 | if (copy_from_user(&range, arg, sizeof(range))) | 344 | if (copy_from_user(&range, arg, sizeof(range))) |
345 | return -EFAULT; | 345 | return -EFAULT; |
346 | if (range.start > total_bytes) | 346 | if (range.start > total_bytes || |
347 | range.len < fs_info->sb->s_blocksize) | ||
347 | return -EINVAL; | 348 | return -EINVAL; |
348 | 349 | ||
349 | range.len = min(range.len, total_bytes - range.start); | 350 | range.len = min(range.len, total_bytes - range.start); |
@@ -570,7 +571,8 @@ static int create_snapshot(struct btrfs_root *root, struct dentry *dentry, | |||
570 | ret = btrfs_commit_transaction(trans, | 571 | ret = btrfs_commit_transaction(trans, |
571 | root->fs_info->extent_root); | 572 | root->fs_info->extent_root); |
572 | } | 573 | } |
573 | BUG_ON(ret); | 574 | if (ret) |
575 | goto fail; | ||
574 | 576 | ||
575 | ret = pending_snapshot->error; | 577 | ret = pending_snapshot->error; |
576 | if (ret) | 578 | if (ret) |