diff options
author | Ingo Molnar <mingo@kernel.org> | 2016-09-30 04:54:46 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2016-09-30 04:54:46 -0400 |
commit | 0b429e18c284af3e7a39f8ec44d95116c473fef8 (patch) | |
tree | 7957f57dc70c95a32f71896c9a526ca88b5517ad /fs/btrfs/ioctl.c | |
parent | d32cdbfb0ba319e44f75437afde868f7cafdc467 (diff) | |
parent | 53061afee43bc5041b67a45b6d793e7afdcf9ca7 (diff) |
Merge branch 'linus' into locking/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/btrfs/ioctl.c')
-rw-r--r-- | fs/btrfs/ioctl.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index b2a2da5893af..7fd939bfbd99 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -1634,6 +1634,9 @@ static noinline int btrfs_ioctl_snap_create_transid(struct file *file, | |||
1634 | int namelen; | 1634 | int namelen; |
1635 | int ret = 0; | 1635 | int ret = 0; |
1636 | 1636 | ||
1637 | if (!S_ISDIR(file_inode(file)->i_mode)) | ||
1638 | return -ENOTDIR; | ||
1639 | |||
1637 | ret = mnt_want_write_file(file); | 1640 | ret = mnt_want_write_file(file); |
1638 | if (ret) | 1641 | if (ret) |
1639 | goto out; | 1642 | goto out; |
@@ -1691,6 +1694,9 @@ static noinline int btrfs_ioctl_snap_create(struct file *file, | |||
1691 | struct btrfs_ioctl_vol_args *vol_args; | 1694 | struct btrfs_ioctl_vol_args *vol_args; |
1692 | int ret; | 1695 | int ret; |
1693 | 1696 | ||
1697 | if (!S_ISDIR(file_inode(file)->i_mode)) | ||
1698 | return -ENOTDIR; | ||
1699 | |||
1694 | vol_args = memdup_user(arg, sizeof(*vol_args)); | 1700 | vol_args = memdup_user(arg, sizeof(*vol_args)); |
1695 | if (IS_ERR(vol_args)) | 1701 | if (IS_ERR(vol_args)) |
1696 | return PTR_ERR(vol_args); | 1702 | return PTR_ERR(vol_args); |
@@ -1714,6 +1720,9 @@ static noinline int btrfs_ioctl_snap_create_v2(struct file *file, | |||
1714 | bool readonly = false; | 1720 | bool readonly = false; |
1715 | struct btrfs_qgroup_inherit *inherit = NULL; | 1721 | struct btrfs_qgroup_inherit *inherit = NULL; |
1716 | 1722 | ||
1723 | if (!S_ISDIR(file_inode(file)->i_mode)) | ||
1724 | return -ENOTDIR; | ||
1725 | |||
1717 | vol_args = memdup_user(arg, sizeof(*vol_args)); | 1726 | vol_args = memdup_user(arg, sizeof(*vol_args)); |
1718 | if (IS_ERR(vol_args)) | 1727 | if (IS_ERR(vol_args)) |
1719 | return PTR_ERR(vol_args); | 1728 | return PTR_ERR(vol_args); |
@@ -2357,6 +2366,9 @@ static noinline int btrfs_ioctl_snap_destroy(struct file *file, | |||
2357 | int ret; | 2366 | int ret; |
2358 | int err = 0; | 2367 | int err = 0; |
2359 | 2368 | ||
2369 | if (!S_ISDIR(dir->i_mode)) | ||
2370 | return -ENOTDIR; | ||
2371 | |||
2360 | vol_args = memdup_user(arg, sizeof(*vol_args)); | 2372 | vol_args = memdup_user(arg, sizeof(*vol_args)); |
2361 | if (IS_ERR(vol_args)) | 2373 | if (IS_ERR(vol_args)) |
2362 | return PTR_ERR(vol_args); | 2374 | return PTR_ERR(vol_args); |