summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-09-29 11:20:53 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-09-29 11:20:52 -0700
commit425322249a1cccdd14d1c1d80cd572faf51cf06c (patch)
treee5729812a73425270c521d7f4d7dab167d35c263 /drivers/soc
parenta7d7221fa3f91bb197f2677ee8a70137881d0fb5 (diff)
parent9f18e779e61f42622e901d4da17647ad07205a28 (diff)
Merge "msm: mink: Accept zero args for invoke command"
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/qcom/smcinvoke.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/soc/qcom/smcinvoke.c b/drivers/soc/qcom/smcinvoke.c
index a1344f0780b0..6de73217bf86 100644
--- a/drivers/soc/qcom/smcinvoke.c
+++ b/drivers/soc/qcom/smcinvoke.c
@@ -375,23 +375,27 @@ long smcinvoke_ioctl(struct file *filp, unsigned cmd, unsigned long arg)
nr_args = object_counts_num_buffers(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;
goto out;
}
- args_buf = kzalloc(nr_args * req.argsize, GFP_KERNEL);
- if (!args_buf) {
- ret = -ENOMEM;
- goto out;
- }
+ if (nr_args) {
- 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);
- if (ret) {
- ret = -EFAULT;
- goto out;
+ if (ret) {
+ ret = -EFAULT;
+ goto out;
+ }
}
inmsg_size = compute_in_msg_size(&req, args_buf);