diff options
author | Gui Hecheng <guihc.fnst@cn.fujitsu.com> | 2014-03-31 12:03:25 +0200 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2014-04-07 18:08:45 +0200 |
commit | 9a40f1222a372de77344d85d31f8fe0e1c0e60e7 (patch) | |
tree | 0f4e9fff808aba25e7f9a0b30543b697102b1395 | |
parent | Btrfs: send, fix data corruption due to incorrect hole detection (diff) | |
download | linux-9a40f1222a372de77344d85d31f8fe0e1c0e60e7.tar.xz linux-9a40f1222a372de77344d85d31f8fe0e1c0e60e7.zip |
btrfs: filter invalid arg for btrfs resize
Originally following cmds will work:
# btrfs fi resize -10A <mnt>
# btrfs fi resize -10Gaha <mnt>
Filter the arg by checking the return pointer of memparse.
Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: Chris Mason <clm@fb.com>
-rw-r--r-- | fs/btrfs/ioctl.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 59622366c613..05f8df866e4c 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -1472,6 +1472,7 @@ static noinline int btrfs_ioctl_resize(struct file *file, struct btrfs_trans_handle *trans; struct btrfs_device *device = NULL; char *sizestr; + char *retptr; char *devstr = NULL; int ret = 0; int mod = 0; @@ -1539,8 +1540,8 @@ static noinline int btrfs_ioctl_resize(struct file *file, mod = 1; sizestr++; } - new_size = memparse(sizestr, NULL); - if (new_size == 0) { + new_size = memparse(sizestr, &retptr); + if (*retptr != '\0' || new_size == 0) { ret = -EINVAL; goto out_free; } |