summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGui Hecheng <guihc.fnst@cn.fujitsu.com>2014-03-31 12:03:25 +0200
committerChris Mason <clm@fb.com>2014-04-07 18:08:45 +0200
commit9a40f1222a372de77344d85d31f8fe0e1c0e60e7 (patch)
tree0f4e9fff808aba25e7f9a0b30543b697102b1395
parentBtrfs: send, fix data corruption due to incorrect hole detection (diff)
downloadlinux-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.c5
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;
}