Commit 0a280962 authored by Al Viro's avatar Al Viro

autofs4 copy_dev_ioctl(): keep the value of ->size we'd used for allocation

X-Coverup: just ask spender
Cc: stable@vger.kernel.org
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 7e0e953b
...@@ -95,7 +95,7 @@ static int check_dev_ioctl_version(int cmd, struct autofs_dev_ioctl *param) ...@@ -95,7 +95,7 @@ static int check_dev_ioctl_version(int cmd, struct autofs_dev_ioctl *param)
*/ */
static struct autofs_dev_ioctl *copy_dev_ioctl(struct autofs_dev_ioctl __user *in) static struct autofs_dev_ioctl *copy_dev_ioctl(struct autofs_dev_ioctl __user *in)
{ {
struct autofs_dev_ioctl tmp; struct autofs_dev_ioctl tmp, *res;
if (copy_from_user(&tmp, in, sizeof(tmp))) if (copy_from_user(&tmp, in, sizeof(tmp)))
return ERR_PTR(-EFAULT); return ERR_PTR(-EFAULT);
...@@ -106,7 +106,11 @@ static struct autofs_dev_ioctl *copy_dev_ioctl(struct autofs_dev_ioctl __user *i ...@@ -106,7 +106,11 @@ static struct autofs_dev_ioctl *copy_dev_ioctl(struct autofs_dev_ioctl __user *i
if (tmp.size > (PATH_MAX + sizeof(tmp))) if (tmp.size > (PATH_MAX + sizeof(tmp)))
return ERR_PTR(-ENAMETOOLONG); return ERR_PTR(-ENAMETOOLONG);
return memdup_user(in, tmp.size); res = memdup_user(in, tmp.size);
if (!IS_ERR(res))
res->size = tmp.size;
return res;
} }
static inline void free_dev_ioctl(struct autofs_dev_ioctl *param) static inline void free_dev_ioctl(struct autofs_dev_ioctl *param)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment