diff options
Diffstat (limited to 'fs/ioctl.c')
| -rw-r--r-- | fs/ioctl.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/fs/ioctl.c b/fs/ioctl.c index 0f56deb24ce6..c415668c86d4 100644 --- a/fs/ioctl.c +++ b/fs/ioctl.c @@ -568,7 +568,7 @@ static int ioctl_fsthaw(struct file *filp)  	return thaw_super(sb);  } -static long ioctl_file_dedupe_range(struct file *file, void __user *arg) +static int ioctl_file_dedupe_range(struct file *file, void __user *arg)  {  	struct file_dedupe_range __user *argp = arg;  	struct file_dedupe_range *same = NULL; @@ -582,6 +582,10 @@ static long ioctl_file_dedupe_range(struct file *file, void __user *arg)  	}  	size = offsetof(struct file_dedupe_range __user, info[count]); +	if (size > PAGE_SIZE) { +		ret = -ENOMEM; +		goto out; +	}  	same = memdup_user(argp, size);  	if (IS_ERR(same)) { | 
