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) |
