summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/as_gk20a.c
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2016-12-07 06:48:59 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2016-12-19 18:40:25 -0500
commitb018428c166959c99f045a70db87a42a4e061fed (patch)
tree82437c0db54acfe07d01971ee49f199a12d0da0d /drivers/gpu/nvgpu/gk20a/as_gk20a.c
parent9da40c79fc36ea73cf682a7f4c76c8717bcf4fce (diff)
gpu: nvgpu: Remove BUG_ON from _IOC_SIZE checks
When the user-supplied ioctl argument size is too large, just return -EINVAL from the ioctl instead of crashing on a BUG_ON (for as, ctrl, ctxsw, dbg and tsg nodes - channel and sched nodes are already okay). Bug 1849661 Change-Id: I5b0d1d0c4ee47ce0136c424dda5975353f110c7e Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/1266606 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/as_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/as_gk20a.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/as_gk20a.c b/drivers/gpu/nvgpu/gk20a/as_gk20a.c
index 6cdbe3e1..0b90090a 100644
--- a/drivers/gpu/nvgpu/gk20a/as_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/as_gk20a.c
@@ -368,11 +368,10 @@ long gk20a_as_dev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
368 368
369 if ((_IOC_TYPE(cmd) != NVGPU_AS_IOCTL_MAGIC) || 369 if ((_IOC_TYPE(cmd) != NVGPU_AS_IOCTL_MAGIC) ||
370 (_IOC_NR(cmd) == 0) || 370 (_IOC_NR(cmd) == 0) ||
371 (_IOC_NR(cmd) > NVGPU_AS_IOCTL_LAST)) 371 (_IOC_NR(cmd) > NVGPU_AS_IOCTL_LAST) ||
372 (_IOC_SIZE(cmd) > NVGPU_AS_IOCTL_MAX_ARG_SIZE))
372 return -EINVAL; 373 return -EINVAL;
373 374
374 BUG_ON(_IOC_SIZE(cmd) > NVGPU_AS_IOCTL_MAX_ARG_SIZE);
375
376 memset(buf, 0, sizeof(buf)); 375 memset(buf, 0, sizeof(buf));
377 if (_IOC_DIR(cmd) & _IOC_WRITE) { 376 if (_IOC_DIR(cmd) & _IOC_WRITE) {
378 if (copy_from_user(buf, (void __user *)arg, _IOC_SIZE(cmd))) 377 if (copy_from_user(buf, (void __user *)arg, _IOC_SIZE(cmd)))