msm: mink: Accept zero args for invoke command
Currently, INVOKE IOCTL assumes presence of atleast one arg. This assumption is not correct. Hence, adding support for zero args in INVOKE IOCTL. Change-Id: Ib44789559c69e5808ed362cf9191486c93b2b66e Signed-off-by: Dinesh K Garg <dineshg@codeaurora.org>
This commit is contained in:
parent
9e2d528dc4
commit
9f18e779e6
1 changed files with 14 additions and 10 deletions
|
@ -375,23 +375,27 @@ long smcinvoke_ioctl(struct file *filp, unsigned cmd, unsigned long arg)
|
||||||
nr_args = object_counts_num_buffers(req.counts) +
|
nr_args = object_counts_num_buffers(req.counts) +
|
||||||
object_counts_num_objects(req.counts);
|
object_counts_num_objects(req.counts);
|
||||||
|
|
||||||
if (!nr_args || req.argsize != sizeof(union smcinvoke_arg)) {
|
if (req.argsize != sizeof(union smcinvoke_arg)) {
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
args_buf = kzalloc(nr_args * req.argsize, GFP_KERNEL);
|
if (nr_args) {
|
||||||
if (!args_buf) {
|
|
||||||
ret = -ENOMEM;
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = copy_from_user(args_buf, (void __user *)(req.args),
|
args_buf = kzalloc(nr_args * req.argsize, GFP_KERNEL);
|
||||||
|
if (!args_buf) {
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = copy_from_user(args_buf,
|
||||||
|
(void __user *)(req.args),
|
||||||
nr_args * req.argsize);
|
nr_args * req.argsize);
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ret = -EFAULT;
|
ret = -EFAULT;
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inmsg_size = compute_in_msg_size(&req, args_buf);
|
inmsg_size = compute_in_msg_size(&req, args_buf);
|
||||||
|
|
Loading…
Add table
Reference in a new issue